Files.copy(Path,Path)是否创建目录?

时间:2015-04-13 03:34:01

标签: java text-files file-copying

我在Java程序(C:/Users/java/dir1)的目录下有一堆文本文件(比如ss1.txt,ss2.txt,ss3.txt等)?
我想将我的txt文件移动到尚未创建的新目录。我有一个所有文件的字符串地址,我想我可以使用

将它们转换为路径

路径路径= Paths.get(textPath);

创建字符串(C:/Users/java/dir2),使用上述方法将其转换为路径,然后使用

Files.copy(C:/Users/java/dir1/ss1.txt,C:/ Users / java / dir2)

导致ss1.text被复制到新目录?

2 个答案:

答案 0 :(得分:4)

方法Files.copy(C:/Users/java/dir1/ss1.txt,C:/Users/java/dir2)不会创建目录,它会在目录java中创建包含ss1.txt数据的文件dir2。

您可以尝试使用此代码:

File sourceFile = new File( "C:/Users/java/dir1/ss1.txt" );
Path sourcePath = sourceFile.toPath();

File destFile = new File( "C:/Users/java/dir2" );
Path destPath = destFile.toPath();

Files.copy( sourcePath, destPath );

请记住使用java.nio.file.Files和java.nio.file.Path。

如果要使用类表单java.nio将文件从一个目录复制到另一个目录,则应使用Files.walkFileTree(...)方法。您可以在此处查看解决方案Java: Using nio Files.copy to Move Directory

或者你可以简单地使用来自apache http://commons.apache.org/proper/commons-io/库的`FileUtils类,从版本1.2开始提供。

File source = new File("C:/Users/java/dir1");
File dest = new File("C:/Users/java/dir2");
try {
    FileUtils.copyDirectory(source, dest);
} catch (IOException e) {
    e.printStackTrace();
}

答案 1 :(得分:1)

使用Files.createDirectories()

非常简单
Path source = Path.of("c:/dir/dir-x/file.ext");
Path target = Path.of("c:/target-dir/dir-y/target-file.ext");
Files.createDirectories(target.getParent());
Files.copy(path, target, StandardCopyOption.REPLACE_EXISTING);    

不要担心目录是否已经存在,在这种情况下它将什么也不做,并继续前进...