Beneath hier ich ein Beispiel-Szenario beschrieben:Vergleichen Sie zwei Textdateien, Zeile für Zeile
"FileA-Database.txt" enthält die folgenden Namen:
KB200
KB300
KB400
"FileB-Slave.txt" enthält die folgenden Namen:
KB600
KB200
KB400
KB700
Ich möchte die "FileA-Database.txt" mit "FileB-slave.txt" und lassen Sie die fehlenden Werte automatisch ausgefüllt werden, um vergleichen In der Datei "FileA-Database.txt" muss ich auch die fehlenden Werte in einer Textdatei namens "Results.txt" anzeigen.
Der Code muss bitte mit C# (Framework 4.0+) kompatibel sein !.
ich einen einfachen Ansatz brauchen, tut Mine arbeiten genau so, wie ich es will:
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
}
Es ist nicht Standard-Vergleich durch Dateien die gleiche, wenn der gleiche Satz von Linien unterschiedlicher Sequenz in Betracht gezogen werden. –
Ich weiß, das ist eine alte Frage, aber wie werden Sie mit großen Dateien zum Beispiel 1 Gig oder mehr umgehen? Ich habe versucht, diese Antwort und endete außerhalb des Speichers Ausnahme. – Angelo
@Angelo haben Sie jemals etwas gefunden? – null