我是编程新手,F# 是我的第一门 .NET 语言,也是我的第一门函数式语言。作为初学者的项目,我想尝试实现自己的重复文件查找器,并且正在寻找与我的项目相关的 F# 工具的一些提示。如果我的问题不符合 StackOverflow 的标准,我提前道歉:我很乐意根据需要对其进行更改。
这是我想出的粗略想法:我将从所需文件夹中检索所有文件,将文件内容读入字节数组,然后使用哈希表存储字节数组并删除重复项。更有经验的程序员会告诉我这是否是一个好方法?我可以做哪些改进?此外,如前所述,需要查看哪些相关的 F# 工具? MSDN 上有大量的库和命名空间等,对于我这样的新手来说真是不知所措。
预先热烈感谢您的帮助!
最佳答案
我建议从控制台应用程序开始。
有几个相关的 .Net API:
GetFiles
返回一个易于使用的包含所有文件路径的数组,但在找到所有文件之前会阻塞,而 EnumerateFiles
可让您逐个枚举文件并向用户提供反馈。
为了在查找重复项时提高性能,文件长度可用于在比较数据之前查找潜在的重复项。在这里你可以使用 Length property的 System.IO.FileInfo .
如果您创建文件名和文件长度的元组序列,您可以使用 Seq.groupBy对潜在匹配项进行分组。最后,对于 2 人或更多人的群组,您可以读取文件并比较字节以找到完全相同的副本。
关于algorithm - 在 F# 中编写重复文件查找器的技巧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28894696/