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