比较两个文件的内容,显示差异

时间:2013-02-12 21:31:15

标签: .net vb.net

我希望比较两个文件,类似于如何将源代码中的代码版本与更新版本进行比较。我仍然是一个慢速编码器:-S。我的问题在于它的设计是正确的,所以请介入并告诉我它如何最好地工作,希望不会太复杂。

因此,我目前的计划主要是将两个文件加载到单独的文本框中(?)。流将它们分别读入两个arraylists并将数组列表相互比较。并对文件大小等进行一些额外的检查。

我如何循环浏览我正在比较的文本框,并突出显示例如红色哪里有差异?我不知道我是怎么做到的?

高级猜测,我会读取两个数组中的差异(比如元素11)并突出显示文本框的数据位置/元素吗?

2 个答案:

答案 0 :(得分:4)

除非您将此作为学习经验,否则我建议利用现有的实施方式......避免重新发明轮子。有效地区分文件并非易事。

Google的差异匹配补丁的C#端口

http://code.google.com/p/google-diff-match-patch/

您可以将其作为C#编译为DLL,然后使用VB.Net项目中的DLL。

即使你的目标是要学习,如此复杂的话题,我建议你研究一下现有的实施方案。

答案 1 :(得分:2)

您无需显示文件内容即可对其进行比较。您可以使用类System.IO.File中的方法来读取内容,使用Linq查询来比较它们:

这是一个简单而简短的方法:

Dim f1Lines = System.IO.File.ReadLines(file1Path)
Dim f2Lines = System.IO.File.ReadLines(file1Path)
Dim inFile1Only = f1Lines.Except(f2Lines)
Dim inFile2Only = f2Lines.Except(f1Lines)
Dim sameInBoth = f1Lines.Intersect(f2Lines)

您可以在不同的文本框中显示结果。你可以使用

TxtSame.Lines = sameInBoth.ToArray()

将行分配给TextBox