0

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

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

我如何循环浏览我正在比较的文本框并以红色突出显示存在差异的地方?我不知道我会怎么做?

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

4

2 回答 2

4

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

Google 的 Diff Match Patch 有一个 C# 端口

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

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

即使您的目标是学习,对于如此复杂的主题,我也建议您研究现有的实现。

于 2013-02-12T21:34:10.120 回答
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.

于 2013-02-12T21:37:55.903 回答