我正在使用 Commons.IO 的 FileUtils 并且我正在尝试创建一个备份脚本,简单的规则是将 dest 中不存在的所有文件(和子目录)从源复制到 dest 目录,或者如果源具有 lastmodified日期比其他日期新。
我不明白 FileUtils.copyDirectory() 是否是正确的选择,而不是如何设置正确的 FileFilter。
谢谢你。
我正在使用 Commons.IO 的 FileUtils 并且我正在尝试创建一个备份脚本,简单的规则是将 dest 中不存在的所有文件(和子目录)从源复制到 dest 目录,或者如果源具有 lastmodified日期比其他日期新。
我不明白 FileUtils.copyDirectory() 是否是正确的选择,而不是如何设置正确的 FileFilter。
谢谢你。
FilenameFilter
唯一匹配文件或目录的名称。它不能帮助您根据是否存在于不同的树中来决定是否包含一个项目。但是,copyDirectory()
似乎可以根据您的需要做正确的事情,只是效率低下 - 如果您想从复制中排除未更改的文件,您需要自己添加该逻辑。(该解决方案仍然可以在copyDirectory()
内部使用,除非您希望在每个级别上进行日期比较。)
正如@romain 在他对问题 rsync 对此问题的评论中指出的那样(仅复制更改,包括文件内的更改)
话虽如此,您必须将在文件过滤器中获得的文件与另一个目录中的“相同”文件进行比较,只需更改文件路径的顶部并检查它们。
或者为了更好地查看有关文件系统目录遍历的 java 7 I/O 改进。性能优于 Commons FileUtils。