Sotto qui ho descritto un esempio di scenario:confrontare due file di testo linea per linea
"FILEA-database.txt" contiene i seguenti nomi:
KB200
KB300
KB400
"FileB-Slave.txt" contiene i seguenti nomi:
KB600
KB200
KB400
KB700
voglio mettere a confronto il "FILEA-database.txt" con "fileB-slave.txt" e lasciare che i valori mancanti essere compilati automaticamente nel file "FileA-Database.txt" ho anche bisogno di visualizzare i valori mancanti in un file di testo chiamato "Results.txt".
Il codice deve essere compatibile con C# (framework 4.0+) per favore !.
Ho bisogno di un approccio semplice, il mio non lavorare esattamente come lo voglio:
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
}
Non è i file a causa di confronto standard, verrà considerato lo stesso se lo stesso insieme di linee ha sequenza diversa. –
so che questa è una vecchia domanda, ma come gestirai file di grandi dimensioni, ad esempio 1 o più gig? ho provato questa risposta e ho finito per uscire dall'eccezione di memoria .. – Angelo
@Angelo hai mai trovato qualcosa? – null