我应该先建立一个字符串,然后写入文件?

我现在很努力的程序必须生成一个文件。 它是我最好首先生成该文件的内容作为一个字符串,然后该字符串写入文件,或者我应该只是内容直接添加到文件?

是否有一个比其他任何优势?

该文件将约0.5 - 1MB大小的。

--------------解决方案-------------

如果你写一个文件作为你去,你就必须在内存中没有藏在心里的利益,如果它是一个足够大的文件,你不断地刷新流。

但是,你会更可能与部分写入文件中碰到的问题,因为你过了一段单杆的时间,而不是做你的IO。

就个人而言,我会建立起来用一个StringBuilder,然后将其全部写入到磁盘中的单杆。

我认为这是一个更好的主意,一般来说,建立一个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写。

主要的原因,我认为这是一般一个更好的主意直接去输出:

  • 你没有事实证明的时候,你的输出数据量太大,以适应在内存重构你的代码。
  • 该计划的目标是文件,无论如何,那么为什么与写入文件前要在内存格式化傻瓜吗?
  • 写多行到一个文本文件中的API是,在我看来,比加线方式的API清洁StringBuilder

我认为这是更好地使用字符串或StringBuilder的存储数据,那么你可以编写使用File.Write功能到文件。

分类:C# 时间:2015-03-15 人气:0
本文关键词: C#,文件IO
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.634 (s). 10 q(s)