如何仅在to目录java中不存在文件的情况下复制该文件



我已经搜索得很彻底了,我很确定没有人问过这个问题。然而,这可能是因为这完全是错误的做法。我曾经写过一个有效的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祝好运

相关内容

  • 没有找到相关文章

最新更新