找出两个文件是否以编程方式不同的最简单方法是什么?

Bry*_*son 7 .net

找出两个文本文件是否以编程方式不同的最简单方法是什么?鉴于两个文件,我只需要知道它们是否不同.这是一个快速的工具来帮助一个特别讨厌的合并(在一个分支中转换语言从VB到C#(耶!)并在另一个分支中做了很多改变),它将不会投入生产.

可能的解决方案:

  1. 哈希这两个文件并比较哈希值
  2. 拉入文件并进行字符串比较
  3. 调用外部差异工具(遗憾的是Winmerge没有这个的CLI)

如果可能的话,忽略空白区域会很棒,但我并不在乎它.最重要的是它需要快速简便.

我顺便使用.Net 3.5sp1.感谢您的任何想法或指示.

Ste*_*fen 11

Microsoft知识库中有一篇文章,希望它有所帮助.他们比较字节以查看两个文件是否不同 - 如何在Visual C中创建文件比较函数#


Tuf*_*ufo 10

最快的方法是比较流上加载的文件的字节到字节.散列这两个文件对于大文件来说需要太长时间,字符串比较也需要外部工具.

比较字节到字节对您来说是最好的,因为它们只有在两者相同时才能达到文件的EOF.

如果你进行哈希比较,字符串比较或外部工具,你必须在比较时经历整个文件,比较逐字节将只做它们相同的情况.

  • 技术上不是最快的.最快的方法是首先检查文件大小以获得琐碎的拒绝.此外,与IO时间相比,计算简单哈希的时间可能是最小的 - 首先确保使用大小合适的文件读取执行文件缓存.此外,哈希比较没有解析整个文件以拒绝 - 您可以将数据块化并仅比较哈希块.使用处理器高速缓存预取的分块散列cmp可以比天真字节比较快2-3倍(但它可能不会像SIMD/SIAR cmp w/prefetching那样快).另外,您可以轻松地多线程哈希或cmp. (3认同)