Comparing two text files line by line

Below I described an example scenario:

"FileA-Database.txt" contains the following names:

KB200

KB300

KB400

"FileB-Slave.txt" contains the following names:

KB600

KB200

KB400

KB700

I want to compare the file "FileA-Database.txt" with "FileB-Slave.txt" and allow to automatically fill in the missing values ​​in the file "FileA-Database.txt", I also need to display the missing values ​​in the text file "Results.txt".

The code must be compatible with C # (framework 4.0+), please!

I need a simple approach, mine doesn't work exactly the way I want:

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 } 
+7
source share
2 answers
 String directory = @"C:\Whatever\"; String[] linesA = File.ReadAllLines(Path.Combine(directory, "FileA-Database.txt")); String[] linesB = File.ReadAllLines(Path.Combine(directory, "FileB-Database.txt")); IEnumerable<String> onlyB = linesB.Except(linesA); File.WriteAllLines(Path.Combine(directory, "Result.txt"), onlyB); 
+26
source

Since your question seems like you are not making any efforts, I will give you just a rough outline.

  • Read both files in turn, for example. with File.ReadAllLines or File.ReadLines .
  • Use the LINQ Except method.
  • Write the results to a new file.
+9
source

All Articles