我正在处理的程序现在必须生成一个文件。我最好先将文件的内容生成为字符串,然后将该字符串写入文件,还是直接将内容添加到文件中?
一个人有什么优势吗?
文件大小约为0.5 - 1MB。
答案 0 :(得分:9)
如果你随时写一个文件,你就可以不把所有内容保存在内存中,如果它是一个足够大的文件并且你经常刷新流。
但是,您更有可能遇到部分写入文件的问题,因为您在一段时间内而不是一次性完成IO。
就个人而言,我使用StringBuilder构建它,然后一次性将它全部写入磁盘。
答案 1 :(得分:2)
一般来说,我认为创建一个StreamWriter
并写入它是一个更好的主意。为什么在不需要的时候把东西留在记忆里呢?而且它更容易。例如:
using (var writer = new StreamWriter("filename"))
{
writer.WriteLine(header);
// write all your data with Write and WriteLine,
// taking advantage of composite formatting
}
如果要使用StringBuilder
构建多行,则必须编写如下内容:
var sb = new StringBuilder();
sb.AppendLine(string.Format("{0:N0} blocks read", blocksRead));
// etc., etc.
// and finally write it to file
File.WriteAllText("filename", sb.ToString());
当然还有其他选择。您可以将这些行构建为List<string>
,然后使用File.WriteAllLines
。或者您可以写入StringStream
然后将其写入文件。但是所有这些方法都让您多次处理数据。只需打开StreamWriter
并写下来。
主要原因我认为直接输出是一个更好的想法:
StringBuilder
添加行的API更清晰。答案 2 :(得分:-1)
我认为最好使用string或stringbuilder存储数据,然后使用File.Write函数写入文件。