我现在正在开发的一个程序需要生成一个文件。是先将文件内容作为字符串生成,然后再将该字符串写入文件,还是直接将内容添加到文件中,哪种方法更好呢?
这两种方法有没有优劣之分呢?
该文件大小约为0.5-1MB。
如果你边写边读文件,当处理的文件足够大并且经常清空缓存流时,你可以受益于不将所有数据保留在内存中。
然而,这种方式可能会遇到部分文件已被写入但未完成的问题,因为你是在一段时间内进行IO操作,而不是一次性进行。
个人建议使用StringBuilder逐渐构建整个内容,然后一次性写入磁盘中。
Save(...)
方法中捕获所有这些异常,对吧?所以它仍然是一个单一位置。 - Rowland Shaw一般情况下,我认为更好的做法是创建一个 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更加清晰。