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