Страницы

Поиск по вопросам

воскресенье, 15 марта 2020 г.

Как прочитать очень большой текстовый файл?

#c_sharp #файлы #текст


Имеется текстовый файл содержащий всего одну строку, но размер файла 1 Гб. Каким
образом прочитать файл целиком? File.ReadAllLines, File.ReadLines, File.ReadAllText
завершаются с ошибкой о недостаточности памяти. На выходе нужно получить строку (объект
типа string) с содержимым из файла. Файл одно строчный, но строка очень длинная.
    


Ответы

Ответ 1



Нашел подробное описание причин этой ошибки вот здесь: ссылка. Всем спасибо за помощь, в данный момент использую такой код: char[] buffer = new char[104857600]; string text = ""; FileStream fstream = new FileStream("document.txt", FileMode.Open, FileAccess.Read); using (var sr = new StreamReader(fstream)) { int bytesRead = 0; while ((bytesRead = sr.Read(buffer, 0, buffer.Length)) > 0) { text = new string(buffer); // обработка текста } }

Ответ 2



Соберите приложение под AnyCPU и снимите в свойствах проекта чекбокс "Prefer 32 Bit". Пропишите в конфиге приложения Это снимет большую часть ограничений по памяти, и вашу строку можно будет спокойно прочитать целиком.

Ответ 3



Используй значит MemoryMappedFile.

Комментариев нет:

Отправить комментарий