Comparer deux fichiers texte ligne par ligne
Sous ici, j'ai décrit un exemple de Scénario:
"FileA-Database.txt" contient les noms suivants:
KB200
KB300
KB400
"FileB-Slave.txt" contient les noms suivants:
KB600
KB200
KB400
KB700
Je veux comparer l' "FileA-Database.txt" avec "FileB-Slave.txt" et de laisser les valeurs manquantes être remplis automatiquement dans le "FileA-Database.txt" fichier aussi j'ai besoin d'afficher les valeurs manquantes dans un fichier texte appelé "Results.txt".
Le code doit être compatible avec le C# (framework 4.0+) s'il vous plaît!.
J'ai besoin d'une approche simple, le mien ne fonctionne pas exactement de la façon dont je veux:
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
}
OriginalL'auteur Developman | 2013-01-16
Vous devez vous connecter pour publier un commentaire.
je sais que c'est une vieille question, mais comment allez-vous faire de gros fichiers par exemple de 1 go ou plus? j'ai essayé cette réponse et finit par sortir de la mémoire exception..
avez-vous jamais trouver quoi que ce soit?
Vous pouvez essayer les suivantes: Énumérable<String> onlyB = linesB.AsParallel().À l'exception de(linesA.AsParallel());
OriginalL'auteur Tommaso Belluzzo
Depuis votre question semble comme vous avez fait aucun effort, je vais vous donner juste une ébauche.
File.ReadAllLines
ouFile.ReadLines
.Except
méthode.OriginalL'auteur Joey