#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.
Комментариев нет:
Отправить комментарий