兩個文本文件線下方在這裏,我描述的示例場景:比較一行
「FILEA-Database.txt」 包含以下名字:
KB200
KB300
KB400
「FileB-Slave.txt」包含以下名稱:
KB600
KB200
KB400
KB700
我要比較的 「FILEA-Database.txt」 與 「FILEB-Slave.txt」,讓缺失值自動填充在「FileA-Database.txt」文件中,我還需要在名爲「Results.txt」的文本文件中顯示缺失的值。
代碼需要與C#(框架4.0+)兼容!
我需要一個簡單的方法,我的不工作正是我希望它的方式:
private void button_compare_Click(object sender, EventArgs e)
{
string fileA, fileB, fileC;
fileA = "database-critical.txt";
fileB = "patchlist.txt";
fileC = "result.txt";
string alphaFilePath = fileA;
List<string> alphaFileContent = new List<string>();
using (FileStream fs = new FileStream(alphaFilePath, FileMode.Open))
using(StreamReader rdr = new StreamReader(fs))
{
while(!rdr.EndOfStream)
{
alphaFileContent.Add(rdr.ReadLine());
}
}
string betaFilePath = fileB;
StringBuilder sb = new StringBuilder();
using (FileStream fs = new FileStream(betaFilePath, FileMode.Open))
using (StreamReader rdr = new StreamReader(fs))
{
while(! rdr.EndOfStream)
{
string[] betaFileLine = rdr.ReadLine().Split(Convert.ToChar(","));
if (alphaFileContent.Contains(betaFileLine[0]))
{
sb.AppendLine(String.Format("{0}", betaFileLine[0]));
}
}
}
using (FileStream fs = new FileStream(fileC, FileMode.Create))
using (StreamWriter writer = new StreamWriter(fs))
{
writer.Write(sb.ToString());
}
}
//End
}
它不是標準的比較,由於文件將被視爲相同的,如果同一組線有不同的序列。 –
我知道這是一個古老的問題,但如何處理大文件,例如1個演出或更多?我試過這個答案,並最終結束了內存異常.. – Angelo
@安吉洛你有沒有發現任何東西? – null