Csharp/C#教程:逐行比较两个文本文件分享


逐行比较两个文本文件

在这里我描述了一个示例场景:

“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 alphaFileContent = new List(); 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 } 

 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 onlyB = linesB.Except(linesA); File.WriteAllLines(Path.Combine(directory, "Result.txt"), onlyB); 

既然你的问题似乎没有付出任何努力我会给你一个粗略的轮廓。

上述就是C#学习教程:逐行比较两个文本文件分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

  1. 逐行读取这两个文件,例如使用File.ReadAllLinesFile.ReadLines
  2. 使用LINQ的Except方法。
  3. 将结果写入新文件。

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/992637.html

(0)
上一篇 2021年12月25日
下一篇 2021年12月25日

精彩推荐