有哪些算法或Java库可以进行目录的N路递归差异/合并?
我需要能够生成许多相同文件的文件夹树列表,并且具有许多包含相似文件的子目录。我希望能够使用2路合并操作尽快消除尽可能多的冗余。
目标:
- 找到之间有许多相似文件的目录对。 - 生成短列表,其中列出了可以通过2路合并同步以消除重复项的目录对 - 应该递归运行(可能存在更高级别目录的嵌套重复项) - 运行时间和存储应为O(n log n),其中n为目录和文件的数量 - 应能够使用嵌入式DB或页面到磁盘以处理比内存容量更大的文件(100,000+)。 - 可选:在文件夹之间生成祖先和更改集 - 可选:按它们可以消除的重复项数量对合并操作进行排序
我知道如何使用哈希在大约O(n)空间中查找重复文件,但是我不知道如何从此处转换为在文件夹及其子文件夹之间查找部分重叠集合。
编辑:一些澄清
棘手的部分是“完全相同”内容(否则哈希文件哈希将起作用)和“相似”(将不起作用)之间的差异。 基本上,我想在一组目录中馈送此算法,并使其返回可以执行的2路合并操作,以便尽可能减少重复项且冲突尽可能少。 它实际上是构造了一个祖先树,显示哪些文件夹是归属于对方的。
最终目标是让我将许多不同的文件夹合并为一个共同的树。 例如,我可能有一个包含编程项目的文件夹,然后将其中一些内容复制到另一台计算机上进行工作。 然后我可能会将一个中间版本备份到闪存驱动器上。 除非我可能有8或10个不同的版本,具有略有不同的组织结构或文件夹名称。 我需要能够逐步合并它们,以便我可以选择如何在每个阶段中合并更改。
这实际上与我打算使用我的实用程序所做的事情(将来自不同时间点的各种分散备份汇集在一起)几乎相同。 我认为如果我能做对,我可能会将其发布为一个小型开源实用程序。 我认为相同的技巧可能对比较XML树很有用。
我需要能够生成许多相同文件的文件夹树列表,并且具有许多包含相似文件的子目录。我希望能够使用2路合并操作尽快消除尽可能多的冗余。
目标:
- 找到之间有许多相似文件的目录对。 - 生成短列表,其中列出了可以通过2路合并同步以消除重复项的目录对 - 应该递归运行(可能存在更高级别目录的嵌套重复项) - 运行时间和存储应为O(n log n),其中n为目录和文件的数量 - 应能够使用嵌入式DB或页面到磁盘以处理比内存容量更大的文件(100,000+)。 - 可选:在文件夹之间生成祖先和更改集 - 可选:按它们可以消除的重复项数量对合并操作进行排序
我知道如何使用哈希在大约O(n)空间中查找重复文件,但是我不知道如何从此处转换为在文件夹及其子文件夹之间查找部分重叠集合。
编辑:一些澄清
棘手的部分是“完全相同”内容(否则哈希文件哈希将起作用)和“相似”(将不起作用)之间的差异。 基本上,我想在一组目录中馈送此算法,并使其返回可以执行的2路合并操作,以便尽可能减少重复项且冲突尽可能少。 它实际上是构造了一个祖先树,显示哪些文件夹是归属于对方的。
最终目标是让我将许多不同的文件夹合并为一个共同的树。 例如,我可能有一个包含编程项目的文件夹,然后将其中一些内容复制到另一台计算机上进行工作。 然后我可能会将一个中间版本备份到闪存驱动器上。 除非我可能有8或10个不同的版本,具有略有不同的组织结构或文件夹名称。 我需要能够逐步合并它们,以便我可以选择如何在每个阶段中合并更改。
这实际上与我打算使用我的实用程序所做的事情(将来自不同时间点的各种分散备份汇集在一起)几乎相同。 我认为如果我能做对,我可能会将其发布为一个小型开源实用程序。 我认为相同的技巧可能对比较XML树很有用。