哪一个更好或更正确?从StreamWriter类创建对象并在方法中经常使用它并最终处理它是否更好?或者是否更好地使用一个对象StringBuilder然后从中创建一个对象StreamWriter并立即处置它?
1)
var Write = new StreamWriter(string.Format("{0}{1}{2}", Environment.CurrentDirectory, Path.DirectorySeparatorChar, "Dummy.txt"));
for (int i = 0; i < 100; i++)
{
//Do something include calculation
Write.WriteLine(something);
}
Write.Flush();
Write.Dispose();
Run Code Online (Sandbox Code Playgroud)
2)
var Str = new StringBuilder();
for (int i = 0; i < 100; i++)
{
//Do something include calculation
Str.AppendLine(something);
}
var Write = new StreamWriter(string.Format("{0}{1}{2}", Environment.CurrentDirectory, Path.DirectorySeparatorChar, "Dummy.txt"));
Write.Write(Str);
Write.Flush();
Write.Dispose();
Run Code Online (Sandbox Code Playgroud)
第一种可能使用更多IO操作,但内存更少.第二个需要缓冲内存中的所有内容.这可能是也可能不是问题.
什么是更多的问题是,你不使用using语句或try/ finally和您使用string.Format.
我会建议:
// Note the more conventional variable names, too...
string file = Path.Combine(Environment.CurrentDirectory, "Dummy.txt");
using (var writer = File.CreateText(file))
{
for (int i = 0; i < 100; i++)
{
writer.WriteLine(...);
}
}
Run Code Online (Sandbox Code Playgroud)
此外,如果您正在编写的内容自然表示为LINQ查询(或任何其他IEnumerable<string>),您可以使用File.WriteAllLines:
var query = ...; // Something returning an IEnumerable<string>
var file = Path.Combine(Environment.CurrentDirectory, "Dummy.txt");
File.WriteAllLines(file, query);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8038 次 |
| 最近记录: |