2013-04-21 53 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