在F#中编写重复文件查找器的提示

时间:2015-03-06 08:19:45

标签: algorithm f# hashmap

我是编程新手,F#是我的第一个.NET语言,也是我的第一个函数式语言。作为初学者的项目,我想尝试实现我自己的重复文件查找器,我正在寻找与我的项目相关的F#工具的一些提示。如果我的问题不符合StackOverflow的标准,我会提前道歉:我很乐意根据需要对其进行更改。

这是我提出的粗略想法:我将从所需文件夹中检索所有文件,将文件内容读入字节数组,然后使用散列表来存储字节数组并删除重复项。更有经验的程序员会告诉我这是否是一个好方法?我可以做些什么改进?另外,如前所述,要看的相关F#工具是什么? MSDN有一个庞大的库和名称空间等列表,对于像我这样的新手来说真是太过分了。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我建议从控制台应用程序开始。

有几个相关的.Net API:

GetFiles返回一个易于使用的所有文件路径数组,但阻塞直到找到所有文件,其中EnumerateFiles允许您逐个枚举文件并向用户提供反馈。

对于查找重复项时的性能,文件长度可用于在比较数据之前查找可能的重复项。在这里,您可以使用Length propertySystem.IO.FileInfo

如果您创建文件名和文件长度的元组序列,则可以使用Seq.groupBy对潜在匹配进行分组。最后,对于2个或更多的组,您可以读取文件并比较字节以找到完全重复的文件。