gpt4 book ai didi

java - 如何仅复制目录java中不存在的文件

转载 作者:行者123 更新时间:2023-12-01 13:08:57 25 4
gpt4 key购买 nike

我已经进行了相当彻底的搜索,并且我相当确定没有人问过这个问题。然而,这可能是因为这是完全错误的方法。我曾经编写过一个有效的 java 程序,将文件从一个目录复制到另一个目录。如果该文件已存在于相应的目录中,则会捕获异常并重命名。我想将此程序用于另一个应用程序,为此我希望它在捕获异常时不执行任何操作,只需继续该程序而不复制该文件。当它工作时,我将使用它来修复大约 18GB 的​​文件,如果它在捕获异常时甚至打印一个字符,那么效率将非常低。这是我到目前为止的代码:

import java.nio.file.*;
import java.io.IOException;
public class Sync
{
public static void main(String[] args)
{
String from=args[0];
Path to=FileSystems.getDefault().getPath(args[1]);
copyFiles(from, to);
}
public static void copyFiles(String from, Path to)
{
try(DirectoryStream<Path> files= Files.newDirectoryStream(FileSystems.getDefault().getPath(from)))
{
for(Path f:files)
{
Files.copy(f, to.resolve(f.getFileName()));
System.out.println(" "+f.getFileName()+" copied ");
}
}
catch(FileAlreadyExistsException e)
{
//not sure
}
catch(IOException e)
{
e.printStackTrace();
}
}
}

有没有办法使用 FileAlreadyExistsExcpetion 来做到这一点?

最佳答案

我不会使用 try/catch 来执行用户逻辑,从编程的角度来看这是错误的,而且效率不高。我要做的是检查文件是否存在,在这种情况下跳过复制操作或执行任何您想要的操作

for(Path f:files)
{
//here use Files.exists(Path path, LinkOption... options)
Files.copy(f, to.resolve(f.getFileName()));
System.out.println(" "+f.getFileName()+" copied ");
}

这里是文件文档: http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html祝你好运

关于java - 如何仅复制目录java中不存在的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23045433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com