合并文件算法
本文关键字:算法 文件 合并 | 更新日期: 2023-09-27 18:16:39
我正在编写一个针对特定文件夹进行轮询的Windows服务。该目录包含各种文件,每个文件派生于前面的拆分操作:
输入文件夹:- FILE_A_PART_1_OF_2.txt
- FILE_A_PART_2_OF_2.txt
- FILE_B_PART_1_OF_3.txt
- FILE_B_PART_2_OF_3.txt
- FILE_C_PART_2_OF_3.txt
- FILE_C_PART_3_OF_3.txt
- FILE_D_PART_1_OF_3.txt
- FILE_D_PART_3_OF_3.txt
- FILE_E_PART_1_OF_1.txt
服务应该能够只合并完整的文件:
输出文件夹(合并操作后):
- FILE_A.txt
- FILE_E.txt
输入文件夹(合并操作后)
- FILE_B_PART_1_OF_3.txt
- FILE_B_PART_2_OF_3.txt
- FILE_C_PART_2_OF_3.txt
- FILE_C_PART_3_OF_3.txt
- FILE_D_PART_1_OF_3.txt
- FILE_D_PART_3_OF_3.txt
不幸的是,我不得不使用框架2.0。语言是c#。我知道这不是一个复杂的算法,但不知怎的,我就是找不到正确的方向。合并操作并不重要,因此可以表示为:
Merge(string[] filesPart)
或Merge(List<string> filesPart)
。
提前感谢。
首先,用Directory.GetFiles()
抓取所有文件
然后你的主要工具将是Dictionary<>
类。
我想我会用这样的字体:
class BaseFile
{
public int Total { ... }
public List<string> Parts { ... }
}
List<string, BaseFile> baseFiles = ...;
这将允许您扫描文件列表,解析名称并存储它。
扫描完成后,只处理Total == Parts.Count
时的文件。
只要PART_n_OF_m
中的n
保持<您可以简单地对List<string> Parts
进行排序。>
当它变成>= 10的时候你就需要SortedList<int, string> Parts
让您开始:给定输入文件列表,按预期输出文件对它们进行分组。然后,对于每一组,计算出您期望的文件数量。然后,对于每一组,检查你是否有所有的部分。如果您有所有的部分,请将该组中的文件放在一起。