C# 在内存中保存文件差异的好方法

C# 在内存中保存文件差异的好方法,c#,filepath,C#,Filepath,我有12个媒体文件和一些简短的音乐。这些文件是如何区分的,因为所有(我指的是从开始到结束的一个文件内容)内容相同或不同 文件名为: a1_same.wav//自始至终它包含相同的内容 a2_diff.wav//自始至终它包含不同的内容 a3_差异波 a4_差异波 a5_相同的.wav ...... 到12点 现在,我读取所有这些文件并遍历文件名以区分 如果内容相同或不同 // just a pseudo code - syntax may be wrong foreach(var file i

我有12个媒体文件和一些简短的音乐。这些文件是如何区分的,因为所有(我指的是从开始到结束的一个文件内容)内容相同或不同

文件名为:

  • a1_same.wav//自始至终它包含相同的内容
  • a2_diff.wav//自始至终它包含不同的内容
  • a3_差异波
  • a4_差异波
  • a5_相同的.wav ...... 到12点
  • 现在,我读取所有这些文件并遍历文件名以区分 如果内容相同或不同

    // just a pseudo code - syntax may be wrong
    foreach(var file in abcCollection)
    {
        if(file.FilePath.Contains("Same"))
        {
            // then same
        }
        else
        {
            // different
        }
    }
    
    但是我不满意这种检查(使用文件名字符串检查相同或不同)

    还有其他方法可以做到这一点吗?我的意思是将一些主键保留在内存中,或者维护一些内存字典或列表等。老实说,我没有任何线索:-(


    如果您有任何想法,请与他人分享。

    您可以使用诸如MD5之类的哈希函数快速查找文件的物理内容是否相同

    散列函数获取一段输入数据(文件内容)并通过可重复的算法运行,该算法在给定相同的输入数据时始终返回相同的值,但如果输入数据以任何方式不同,则将返回不同的值

    下载站点和内容分发者通常使用此技术来帮助下载者验证文件是否已损坏或篡改,因为他们可以将接收文件的哈希值与文件主机提供的已发布哈希值进行比较

    编辑:请注意,这取决于文件的二进制相等,它不是音频比较,对于包含相同音频剪辑但在剪辑开始和结束时有不同数量的无声引入或引出的文件,或者如果文件中的比特率不同或元数据(MP3标签等)不同,则不起作用


    您可以使用诸如MD5之类的哈希函数快速查找文件的物理内容是否相同

    散列函数获取一段输入数据(文件内容)并通过可重复的算法运行,该算法在给定相同的输入数据时始终返回相同的值,但如果输入数据以任何方式不同,则将返回不同的值

    下载站点和内容分发者通常使用此技术来帮助下载者验证文件是否已损坏或篡改,因为他们可以将接收文件的哈希值与文件主机提供的已发布哈希值进行比较

    编辑:请注意,这取决于文件的二进制相等,它不是音频比较,对于包含相同音频剪辑但在剪辑开始和结束时有不同数量的无声引入或引出的文件,或者如果文件中的比特率不同或元数据(MP3标签等)不同,则不起作用


    对不起,我想你误解了我的问题。文件内容不同或相同,但我自己知道它的名称。但我需要帮助的是以下代码的代码重构:foreach(abcCollection中的var file){if(file.FilePath.Contains(“same”){//那么相同文件的一些逻辑}其他{//不同文件的逻辑})对不起,我想你误解了我的问题。文件内容不同或相同,但我需要帮助的是以下代码的代码重构:foreach(abcCollection中的var file){if(file.FilePath.Contains(“same”){//那么相同文件的一些逻辑}其他{//不同文件的逻辑})