0

我正在使用 Commons.IO 的 FileUtils 并且我正在尝试创建一个备份脚本,简单的规则是将 dest 中不存在的所有文件(和子目录)从源复制到 dest 目录,或者如果源具有 lastmodified日期比其他日期新。

我不明白 FileUtils.copyDirectory() 是否是正确的选择,而不是如何设置正确的 FileFilter。

谢谢你。

4

2 回答 2

0

FilenameFilter唯一匹配文件或目录的名称。它不能帮助您根据是否存在于不同的树中来决定是否包含一个项目。但是,copyDirectory()似乎可以根据您的需要做正确的事情,只是效率低下 - 如果您想从复制中排除未更改的文件,您需要自己添加该逻辑。(该解决方案仍然可以在copyDirectory()内部使用,除非您希望在每个级别上进行日期比较。)

于 2012-05-09T09:40:58.677 回答
0

正如@romain 在他对问题 rsync 对此问题的评论中指出的那样(仅复制更改,包括文件内的更改)

话虽如此,您必须将在文件过滤器中获得的文件与另一个目录中的“相同”文件进行比较,只需更改文件路径的顶部并检查它们。

或者为了更好地查看有关文件系统目录遍历的 java 7 I/O 改进。性能优于 Commons FileUtils。

于 2012-05-09T09:43:37.523 回答