2014-02-13 76 views
-2

兩個文件行我有兩個文件:FILE1.TXT和FILE2.TXT比較相同數量的

FILE1.TXT內容

this is line 1 

this is line 1 

this is line 3 

FILE2.TXT內容

this is line 1 

this is line 2 

this is line 4 

我想要做的是將file1.txt中的第1行與file2.txt中的第1行進行比較等等。如果兩行不同於僅從file2.txt回顯行

這是我的代碼。

int line_number = 0; 
string line_file1, line_file2; 

System.IO.StreamReader file2 = new System.IO.StreamReader("file2.txt"); 
System.IO.StreamReader file1 = new System.IO.StreamReader("file1.txt"); 

while (((line_file2 = file2.ReadLine()) != null) && ((line_file1 = file1.ReadLine()) != null)) 
{ 
    if (line_file2 != line_file1) 
    { 
     Console.WriteLine(line_file2); 
    } 
    line_number++; 
} 

file2.Close(); 
file1.Close(); 

此輸出:

this is line 2 

this is line 4 

請讓我知道,如果你知道一個解決方案或一個更好的辦法。

+0

什麼是你必須解決這個問題?你的讀者應該真的在使用',但除此之外看起來很好。 – Servy

+1

真的比較File1中的第1行和File2中的第2行。難道不是將File1中的第1行與File2中的第1行進行比較? –

+1

「file1.txt中的第1行與file2.txt中的第2行」 - 您是指file2.txt中的第2行,還是您打算在兩邊都說第1行? –

回答

1

假設您想比較file1的第1行和file2的第1行等等。

您可以使用File.ReadAllLines()方法讀取給定路徑中的所有行。

試試這個:

using System.IO; //import this namespace. 


String[] strFile1 = File.ReadAllLines("file1.txt"); 
String[] strFile2 = File.ReadAllLines("file2.txt"); 

if (strFile1.Length == strFile2.Length) 
{ 
    for (int i = 0; i < strFile1.Length; i++) 
    { 
     if (strFile1[i] != strFile2[i]) 
     { 
      Console.WriteLine(strFile2[i]); 
     } 
    } 
} 
+0

是的,這就是我想要的,awsum!謝謝 –

+1

這個代碼比OP更糟糕。 OP的代碼流通過文件,因此具有最小的內存佔用。這種將整個文件的內容熱切地加載到內存中,對於大文件而言,這可能是一個問題。關於這個解決方案也沒有什麼優點。 – Servy

+0

嗨Servy,從來沒有這樣,謝謝:) –