【发布时间】:2014-06-13 03:49:13
【问题描述】:
我在 C# 中将多个文本文件合并到一个文本文件中,并且我正在使用字节数组以块的形式进行操作……这部分对我有用。但是现在我想在新文本文件合并到我的目标文本文件之前添加一个新行。我在不同的线程上发现使用下面的代码应该让我添加一个新行,但由于某种原因,我的文本文件中的最终输出是一个小块 () 而不是一个新行。
有问题的代码:
byte[] newLine = Encoding.Default.GetBytes(Environment.NewLine);
output.Write(newLine, 0, newLine.Length);
合并文本文件的完整代码部分:
int chunkSize = 3 * 1024; // 3KB
using (FileStream output = File.Create(outputFolder + @"\TargetFile.txt"))
{
foreach (string text in textFiles)
{
using (FileStream input = File.OpenRead(text))
{
byte[] buffer = new byte[chunkSize];
int bytesRead;
while ((bytesRead = input.Read(buffer, 0, buffer.Length)) > 0)
{
output.Write(buffer, 0, bytesRead);
}
byte[] newLine = Encoding.Default.GetBytes(Environment.NewLine);
output.Write(newLine, 0, newLine.Length);
}
}
}
我可以在记事本或其他文本编辑器中毫无问题地打开 TargetFile.txt,并且我可以看到我的所有文本都完美呈现,除了我要添加的额外新行...我在做什么错了吗?
注意:在我的代码示例中,我使用的是Encoding.Default,但我也尝试使用Encoding.ASCII,结果完全相同。
【问题讨论】:
-
你试过UTF8编码吗?
-
@MatíasFidemraizer 是的...我只是尝试了相同的结果...
-
而且,您是否尝试只写换行符并看看会发生什么?我的意思是,用 1 个换行符编写一个文件。
-
如果你用
StreamWriter包裹你的FileStream,你可以打电话给StreamWriter.WriteLine()。 -
非常感谢您的建议!只需按照 hvd 的回答中的建议更改代码以使用 'Encoding.Unicode' 确实有效!
标签: c# bytearray text-files newline filestream