gpt4 book ai didi

java - 如果文件不匹配,则递归地将一个目录复制到另一个目录

转载 作者:行者123 更新时间:2023-12-02 11:50:42 26 4
gpt4 key购买 nike

我有一项服务将填充一个目录,我需要定期将其复制到另一个目录。源将定期填充。

当我复制目录时,它会非常大,因此我只想在目标中添加文件,或覆盖不是同一文件的文件(例如文件大小不匹配或修改日期)。

有没有简单的方法可以做到这一点?我知道FileUtils ,但我不清楚它是否总是会覆盖所有文件,以及“合并”在这里意味着什么,特别是它是否不会复制已经匹配的文件。

最佳答案

Files.walkFileTree Files 的其他方法也可以做到:

public void copyTree(Path source,
Path destination)
throws IOException {

Files.walkFileTree(source,
new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult preVisitDirectory(Path dir,
BasicFileAttributes attr)
throws IOException {
Path destPath = destination.resolve(source.relativize(dir));
Files.createDirectories(destPath);
return FileVisitResult.CONTINUE;
}

@Override
public FileVisitResult visitFile(Path file,
BasicFileAttributes attr)
throws IOException {

Path destPath = destination.resolve(source.relativize(file));

FileTime sourceTime = Files.getLastModifiedTime(file);
FileTime destinationTime = Files.getLastModifiedTime(destPath);
if (!Files.exists(destPath) ||
sourceTime.compareTo(destinationTime) > 0) {

Files.copy(file, destPath,
StandardCopyOption.COPY_ATTRIBUTES,
StandardCopyOption.REPLACE_EXISTING);
}

return FileVisitResult.CONTINUE;
}
});
}

关于java - 如果文件不匹配,则递归地将一个目录复制到另一个目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47890719/

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