5

谁能告诉我下面的代码我做错了什么。我没有收到任何错误 - 它只是直截了当。

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class Main {

    public static void main(String[] args) {
         Path source = Paths.get("C:\\Users\\Public\\Pictures\\SamplePictures");
    Path nwdir = Paths.get("D:\\NetbeansProjects\\CopyingFiles\\copiedImages");

    try{
    Files.copy(source, nwdir);
    }catch (IOException e){
        System.out.println("Unsucessful. What a surprise!");
    }
    }
}
4

3 回答 3

7

如果您查看Files.copy的 Javadocs ,您会注意到这一行(添加了重点):

如果文件是一个目录,那么它会在目标位置创建一个空目录(目录中的条目不会被复制)。此方法可与 walkFileTree 方法一起使用,以复制目录和目录中的所有条目,或在需要时复制整个文件树。

所以看起来你需要使用那个 walkFileTree 方法。

(正如评论者所说,打印出异常,他们会经常告诉你出了什么问题!)

于 2012-04-12T15:52:49.507 回答
4

在这里寻找一种 NIO Java7 方法来递归地将目录复制到另一个位置。这可以通过Files.walkFileTree另一个答案中提到的 Jon7 来完成。我得到的这个代码是一个简单的目录副本:

final Path srcDir, final Path dstDir;
Files.walkFileTree(srcDir, new SimpleFileVisitor<Path>() {
    public FileVisitResult visitFile( Path file, BasicFileAttributes attrs ) throws IOException {
        return copy(file);
    }
    public FileVisitResult preVisitDirectory( Path dir, BasicFileAttributes attrs ) throws IOException {
        return copy(dir);
    }
    private FileVisitResult copy( Path fileOrDir ) throws IOException {
        Files.copy( fileOrDir, dstDir.resolve( srcDir.relativize( fileOrDir ) ) );
        return FileVisitResult.CONTINUE;
    }
});

有关还处理文件属性和覆盖现有文件的更详细示例,请参阅http://docs.oracle.com/javase/tutorial/essential/io/examples/Copy.java

于 2014-02-06T13:33:49.527 回答
2

这就是我设法将文件从一个位置复制到另一个位置的方式:

import java.io.IOException;
import static java.nio.file.StandardCopyOption.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class App  {

 public static void main(String[] args)
 {
    Path source = Paths.get("E:/myFile.pdf");
    Path nwdir = Paths.get("F:");
    try
    { 
       Files.copy(source, nwdir.resolve(source.getFileName()), REPLACE_EXISTING);
       System.out.println("File Copied");
    }
    catch(IOException e)
    {
        e.printStackTrace();
    }
 }

}
于 2014-08-27T16:49:59.183 回答