我是编程新手,F#是我的第一个.NET语言,也是我的第一个函数式语言。作为初学者的项目,我想尝试实现我自己的重复文件查找器,我正在寻找与我的项目相关的F#工具的一些提示。如果我的问题不符合StackOverflow的标准,我会提前道歉:我很乐意根据需要对其进行更改。
这是我提出的粗略想法:我将从所需文件夹中检索所有文件,将文件内容读入字节数组,然后使用散列表来存储字节数组并删除重复项。更有经验的程序员会告诉我这是否是一个好方法?我可以做些什么改进?另外,如前所述,要看的相关F#工具是什么? MSDN有一个庞大的库和名称空间等列表,对于像我这样的新手来说真是太过分了。
提前感谢您的帮助!
答案 0 :(得分:1)
我建议从控制台应用程序开始。
有几个相关的.Net API:
GetFiles
返回一个易于使用的所有文件路径数组,但阻塞直到找到所有文件,其中EnumerateFiles
允许您逐个枚举文件并向用户提供反馈。
对于查找重复项时的性能,文件长度可用于在比较数据之前查找可能的重复项。在这里,您可以使用Length property的System.IO.FileInfo。
如果您创建文件名和文件长度的元组序列,则可以使用Seq.groupBy对潜在匹配进行分组。最后,对于2个或更多的组,您可以读取文件并比较字节以找到完全重复的文件。