任何人都可以通过以下代码告诉我我做错了什么。我没有收到任何错误 - 它只是直接捕获。
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!");
}
}
}
答案 0 :(得分:6)
如果您查看Files.copy的Javadoc,您会注意到这一行(强调添加):
如果文件是目录,则它在目标位置创建一个空目录(目录中的条目不会被复制)。此方法可与walkFileTree方法一起使用,以复制目录和目录中的所有条目,或者复制所需的整个文件树。
所以看起来你需要使用那个walkFileTree方法。
(正如评论者所说,打印出异常,他们经常会告诉你什么是错的!)
答案 1 :(得分:4)
来到这里寻找NIO Java7方法,以递归方式将目录复制到另一个位置。这可以使用其他anwer中提到的Jon7 Files.walkFileTree
来完成。我得到的代码是一个简单的目录副本:
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。
答案 2 :(得分:1)
这就是我设法将文件从一个位置复制到另一个位置的方法:
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();
}
}
}