2015-05-29 3 views
-1

Я хочу сгенерировать строку, а затем записать ее в .txt-файл. Проблема в том, что я получаю исключения OutOfMemory, когда я пытаюсь это сделать.Исключение OutOfMemory при записи большого текстового файла

Файл большой (около 10000 строк).

Я использую String.Format и петли для создания строки. Как я могу записать это в .txt-файл?

 string Text= @"..."; 
     const string channelScalar = @"..."; 
     Text= string.Format(...); 
     foreach (Channel channel in ...) 
     { 
      switch (channel.Type) 
      { 
       case "...": 
        Text= string.Format(Text, 
         ChannelFrames(channel, string.Format(...); 
        break; 
      } 
     } 
     File.WriteAllText(textBox9.Text,Text); 
+3

Используйте потоковик и напишите каждую строку напрямую, а не сначала сохраните все это в памяти. – Jens

+1

Пожалуйста, предоставьте свой код, чтобы мы знали, как вы генерируете строку. Если вы еще не используете 'TextWriter' и' StreamWriter', вам может понадобиться их использовать. – maniak1982

+0

спасибо, что вы ищете для потоковеда. @Jens –

ответ

7

Используйте StreamWriter непосредственно написать каждую строку генерируемую в текстовый файл. Это позволяет избежать сохранения всего длинного файла в памяти.

using (System.IO.StreamWriter sw = new System.IO.StreamWriter("C:\\Somewhere\\whatever.txt")) 
    { 
     //Generate all the single lines and write them directly into the file 
     for (int i = 0; i<=10000;i++) 
     { 
      sw.WriteLine("This is such a nice line of text. *snort*"); 
     } 
    } 
+0

спасибо за ответ. –

+0

его удивительный. файл сохраняется менее 1 секунды. Большое спасибо! @Jens –

+0

Без проблем, рад, что это помогло. – Jens

Смежные вопросы