ここで、シナリオの例を説明しました。
「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<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
}