我有這個代碼比較兩個文本文件,並將差異寫入日誌文件,但由於某些原因,即使使用某些行測試log.txt文件有時是空白的開始與*這些不總是寫任何我必須保存文本文件時寫完,雖然這並不能解釋爲什麼有時它的工作原理任何幫助將是巨大的剩餘在緩衝寫入文本文件並不總是工作/保存
private void compare()
{
string FilePath = @"c:\snapshot\1.txt";
string Filepath2 = @"c:\snapshot\2.txt";
int counter = 0;
string line;
string line2;
var dir = "c:\\snapshot\\log.txt";
using (FileStream fs = File.Create(dir))
{
fs.Dispose();
}
StreamWriter dest = new StreamWriter(dir);
if (File.Exists(FilePath) & File.Exists(Filepath2))
{
// Read the file and display it line by line.
using (var file = File.OpenText(FilePath))
using (var file2 = File.OpenText(Filepath2))
{
while (((line = file.ReadLine()) != null & (line2 = file2.ReadLine()) != null))
{
if (line.Contains("*"))
{
dest.WriteLine(line2);
}
else if (!line.Contains(line2))
{
dest.WriteLine(line2);
}
counter++;
}
}
}
dest.Close();
}
乍一看,在我看來,由於您正在閱讀具有不同數據的兩個文件,因此您的行可能會不同步。如果文件不是很大,您可能需要將它們加載到列表中並進行更正式的比較。 – IamIC
你的代碼中有一些亂七八糟的東西,如果你使用「使用」,你不需要調用dispose,爲什麼你不使用StreamWriter的「using」,爲什麼使用FileStream並且什麼也不做呢...... – Giedrius
順便說一句,'using'語句的全部內容,它會爲你調用Dispose,所以在'using'塊中調用Dispose,最好不需要。 – SWeko