Я думаю, что в целом лучше создать 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
.