通过比较行两个文本文件行 [英] Compare two text files line by line
问题描述
在此之下我所描述的示例场景:
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+)请!
我需要一个简单的兼容方法,矿井不工作正是这样,我希望它:
私人无效button_compare_Click(对象发件人,EventArgs五)
{
串的fileA,FILEB,fileC;
的fileA =数据库critical.txt
FILEB =patchlist.txt;
fileC =的Result.txt;
串alphaFilePath =的fileA;
名单,LT;字符串> alphaFileContent =新的List<串GT;();使用
(的FileStream FS =新的FileStream(alphaFilePath,FileMode.Open))
使用(StreamReader的RDR =新的StreamReader(FS))
{
,而(! rdr.EndOfStream)
{
alphaFileContent.Add(rdr.ReadLine());
}
}
串betaFilePath = FILEB;
StringBuilder的SB =新的StringBuilder();
使用(的FileStream FS =新的FileStream(betaFilePath,FileMode.Open))
使用(StreamReader的RDR =新的StreamReader(FS))
{$ B $ (!rdr.EndOfStream),b而
{
的String [] = betaFileLine rdr.ReadLine()斯普利特(Convert.ToChar());
如果(alphaFileContent.Contains(betaFileLine [0]))
{
sb.AppendLine(的String.Format({0},betaFileLine [0]));
}
}
}
使用(的FileStream FS =新的FileStream(fileC,FileMode.Create))
使用(StreamWriter的作家=新的StreamWriter( FS))
{
writer.Write(sb.ToString());
}
}
//结束
}
字符串目录= @C:\Whatever\
的String [] = linesA File.ReadAllLines(Path.Combine(目录FILEA-Database.txt));
的String [] = linesB File.ReadAllLines(Path.Combine(目录FILEB-Database.txt));
IEnumerable的<串GT; onlyB = linesB.Except(linesA);
File.WriteAllLines(Path.Combine(目录的Result.txt),onlyB);
Beneath here i described a 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 "FileA-Database.txt" with "FileB-Slave.txt" and let the missing values be filled in automatically in the "FileA-Database.txt" file also i need to display the missing values in a text file called "Results.txt".
The code needs to be compatible with C# (framework 4.0+) please!.
I need a simple approach, mine doesnt work exactly the way i want it to:
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
}
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);
这篇关于通过比较行两个文本文件行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!