2014-02-13 2 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 

Я хотите сделать, это сравнить строку 1 с file1.txt с линией 1 из файла file2.txt и так далее. Если две строки отличаются от эхо линии от файла 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

Действительно сравните строку 1 с File1 с линией 2 из File2. Разве это не сравнивает строку 1 с File1 с линией 1 из File2? –

+1

«строка 1 из file1.txt с линией 2 из файла file2.txt» - вы имели в виду строку 2 из файла file2.txt, или вы намеревались сказать строку 1 с обеих сторон? –

ответ

1

Предполагая, что вы хотите сравнить 1-ю строку файла1 с 1-й строкой файла2 и так далее.

Вы можете использовать метод 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

Hi Servy, никогда не было этого, спасибо :) –

Смежные вопросы