所以我似乎找不到合适的方法将文件从一个目录复制到另一个目录而不覆盖具有相同名称的文件。我见过的所有现有java方法都覆盖现有文件(FileUtils)或抛出异常(Files nio)
例如,如果我有一个文件结构,如:
├───srcDir
│ ├───this.txt
│ ├───hello.txt
│ ├───main.java
├───destDir
│ ├───this.txt
我想复制hello.txt
和main.java
,但我不想复制/更新/替换this.txt
我正在尝试这种方法:
try{
DirectoryStream<path> files = Files.newDirecotryStream(FileSystems.getDefault().getPath(srcDir);
for(Path f : files)
if(Files.notExists(f))
Files.copy(f, Paths.get(targetDir).resolve(f.getFileName()));
}catch(IOException e){
e.printStackTrace();
}
这显然不起作用,因为我只是检查src目录中是否存在f
,当然它存在,因为那是我从哪里来的。
我真的想说if(Files.notExists(f) in target directory)
之类的话
但我不确定这是否可能。
这是一个合适的方法吗?有没有更好的办法?感谢
答案 0 :(得分:2)
一种方法是为目标文件创建一个File对象,然后检查它是否存在,如:
for(Path f : files) {
String targetPath = targetDir + System.getProperty("file.separator") + f.getFileName;
File target = new File(targetPath);
if(!target.exists())
Files.copy(f, Paths.get(targetDir).resolve(f.getFileName()));
}