2011-04-08 58 views
0

我有20個文件我想一個接一個地比較它與master.txt文件,如果有任何匹配程序給我兩個文件之間的匹配總數我嘗試用下面的代碼:與20個其他文件比較文件來計算匹配的數量

using System; 
using System.IO; 
using System.Collections.Generic; 
using System.Linq; 

namespace ConsoleApplication1 

{ 
class Program 
{ 
    static void Main() 
    { 
     int found; 
     int count = 0; 
     string[] content = File.ReadAllLines(@"C:\master.txt"); 
     string[] mastercontent = File.ReadAllLines(**ineed to pass more than filename**); 
     foreach (string con in content) 
     { 
      if (mastercontent.Contains(con)) 
      { 
       found = 1; 
       count = count + found; 
      } 

      // else 
      // { 
      //Console.WriteLine("no match"); 
      // } 
      Console.WriteLine(count); 
     } 
    } 
} 
} 

我面臨的問題與傳遞多個文件路徑File.ReadAllLines()

回答

0

帶你想要閱讀的文件名的數組或列表。

我只是向您展示實施的邏輯。你可以用適當的方式編碼。

string[] mastercontent = null; 
foreach(string file in filenames) 
{ 
mastercontent += File.ReadAllLines(file); 

} 
0

把另一個循環在外水平或將其解壓縮到另一個函數/方法`CompareWithMaster(strign文件名)」,你可以通過文件名給它的列表。

你可能想先作一些優化(也許檢查文件大小和東西)

1

試試這個

string[] listOfFiles = {"file1.txt","file2.txt"}; 
List<string> allLines = new List<string>(); 

foreach (var path in listOfFiles) 
{ 
    allLines.AddRange(File.ReadAllLines(path)); 
} 

//allLines now contains the lines from all files in listOfFiles 

或者使用詞典更快查找

string[] listOfFiles = {"file1.txt","file2.txt"}; 
    Dictionary<string,string> allLines = new Dictionary<string,string>(); 

    foreach (var path in listOfFiles) 
    { 
     foreach (var line in File.ReadAllLines(path)) 
     { 
      if (!allLines.ContainsKey(line)) 
      { 
       allLines.Add(line,string.Empty); 
      } 
     } 
    } 
相關問題