我只是要合併在一個給定的目錄中的所有文本文件,類似於下面的命令提示符下命令:合併多個文本文件 - StreamWriter不寫入一個文件?
cd $directory
copy * result.txt
我已經寫了下面的代碼,它幾乎完成我想要的東西,但它做一些奇怪的事情。當StreamWriter
寫入第一個文件(或i = 0
)時,它實際上並不寫入任何內容 - 文件大小仍爲0字節,儘管第一個文件大約爲300 KB。但是,其他文件寫入成功執行。
如果我將命令提示符的輸出與來自C#代碼的輸出比較,可以看到缺少大塊文本。此外,命令提示符結果爲1,044 KB,其中C#結果爲700 KB。
string[] txtFiles = Directory.GetFiles(filepath);
using (StreamWriter writer = new StreamWriter(filepath + "result.txt"))
{
for (int i = 0; i < txtFiles.Length; i++)
{
using (StreamReader reader = File.OpenText(txtFiles[i]))
{
writer.Write(reader.ReadToEnd());
}
}
}
我使用的StreamWriter
/StreamReader
不正確?
當程序再次運行在同一個目錄中時,FileMode.OpenOrCreate'會再次將所有文件添加到輸出文件。而是使用'FileMode.Create'來完全覆蓋它或'FileMode.CreateNew'來獲取它已經存在的異常。 – Herdo
@Herdo該程序在運行之前刪除與'filePath'變量匹配的所有現有文件夾,因此該實現應該是可以的。謝謝! – TimeBomb006