C # Очень большая строка Манипуляции (исключение нехватки памяти)

Мне нужно прочитать необработанный текстовый файл размером 1 ГБ с диска в RAM, чтобы выполнить некоторые операции со строками в C #.

string contents = File.ReadAllText(path)

выбрасывает исключения из памяти (неудивительно)

Как лучше всего это сделать?

17
задан Luke Belbina 9 May 2011 в 11:08
поделиться

1 ответ

Я использовал ReadAllText для файла размером 109 МБ и вылезал из памяти, что действительно странно. Во всяком случае, поэтому я использовал буфер для чтения файла с хорошей производительностью и StringBuilder для повышения эффективности использования памяти. Вот мой код:

                StringBuilder sb = new StringBuilder();
                using (FileStream fs = File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
                using (BufferedStream bs = new BufferedStream(fs))
                using (StreamReader sr = new StreamReader(bs))
                {
                    string line;                    
                    while ((line = sr.ReadLine()) != null)
                        sb.AppendLine(line);
                }
0
ответ дан 22 October 2019 в 03:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: