首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >合并文件算法

合并文件算法
EN

Stack Overflow用户
提问于 2011-12-03 11:01:23
回答 2查看 290关注 0票数 0

我正在编写一个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).

提前谢谢你。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-03 11:22:46

首先,使用Directory.GetFiles()获取所有文件

然后您的主要工具将是Dictionary<>类。

我想我会用这样的方法:

代码语言:javascript
复制
class BaseFile
{   
   public int Total { ... }     
   public List<string> Parts { ... }
}    

List<string, BaseFile> baseFiles = ...;

这将允许您扫描文件列表,解析名称并存储它。

扫描后,仅在Total == Parts.Count时处理文件。

只要nPART_n_OF_m中保持< 10,您就可以简单地对List<string> Parts进行排序。

当它成为>= 10时,您将需要类似于SortedList<int, string> Parts的东西

票数 2
EN

Stack Overflow用户

发布于 2011-12-03 11:08:26

要开始:给定输入文件的列表,根据预期的输出文件对它们进行分组。然后,为每一组计算出您期望的文件数量。然后,为每一组,检查看看你是否有所有的部分。如果您拥有所有的部分,那么将该组中的文件连在一起。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8367192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档