2013-04-21 75 views
0

我正在寻找解决方案来比较两个文本文件,并将第二个文件中的不足行添加到第一个文件中。这是一个例子。VB.NET比较两个文本文件并添加不足的行

第一个文件的内容:

<category = Names> 
Anton 
Darell 
Kate 
</category> 
<category = Job title> 
Director 
President 
Manager 
</category> 
<category = other> 
bla bla 
lia lia 
ohoho 
</category> 

第二个文件的内容:

<category = Names> 
Anton 
Frank 
Thomas 
</category> 
<category = Job title> 
Driver 
President 
Manager 
</category> 
<category = other> 
bla bla 
olia olia olia 
</category> 

如果你已经注意到每个文件有一些类型类别的,所以我想从第二个文件添加新的对象到First File中的相同类别新文件应如下所示:

<category = Names> 
Anton 
Darell 
Kate 
Frank 
Thomas 
</category> 
<category = Job title> 
Director 
President 
Manager 
Driver 
</category> 
<category = other> 
bla bla 
lia lia 
ohoho 
olia olia olia 
</category> 

希望能够是可以解决的。

+0

基本上你想写一个差异(比较)工具,也将做合并?已经有软件可以为你做这件事(BeyondCompare是我们在工作中使用的软件,但也有其他软件)。 – Tim 2013-04-21 01:01:35

+3

这应该很容易实现。告诉我们你已经尝试过的东西,我们应该能够告诉你如何完成它。 – RBarryYoung 2013-04-21 01:12:52

+0

我在考虑使用函数拆分,因此我可以将每个类别拆分为两个文件,然后进行比较,添加不足的行并将所有类别写回到一个文件中。我是VB初学者,这就是为什么我问这是可能的:) – Chelovek 2013-04-21 20:14:18

回答

0
Private mResult As New List(Of String) 

Public Sub MergeFiles() 
    ReadFile("C:\File1.txt") 
    ReadFile("C:\File2.txt") 
    WriteFile("C:\Result.txt") 
    mResult.Clear() 
End Sub 

Private Sub ReadFile(ByVal Path As String) 
    Dim mSR As New System.IO.StreamReader(Path) 
    Dim mItem As String = "" 
    Do While Not mSR.EndOfStream 
     mItem = mSR.ReadLine 
     If Not mResult.Contains(mItem) Then mResult.Add(mItem) 
    Loop 
    mSR.Close() 
    mSR.Dispose() 
End Sub 

Public Sub WriteFile(ByVal Path As String) 
    Dim mSW As New System.IO.StreamWriter(Path) 
    For Each mItem As String In mResult 
     mSW.WriteLine(mItem) 
    Next 
    mSW.Close() 
    mSW.Dispose() 
End Sub 
+0

感谢您的回答,但它没有工作。它甚至不会创建Result.txt文件。我不确定,是什么问题。 – Chelovek 2013-04-23 15:29:54

+0

您是否在上面的代码中遇到错误,以及何时,您在哪一行得到它?或者deos ist运行,只是文件不会被创建? – poi 2013-05-23 13:32:20