Расширение ответа CasperOne
Проще говоря, невозможно надежно поместить файл объемом 100 ГБ в память одновременно. На 32-битной машине просто не хватает адресного пространства. На 64-битной машине достаточно адресного пространства, но за время, которое потребуется для фактического помещения файла в память, ваш пользователь убьет ваш процесс из-за разочарования.
Хитрость заключается в постепенной обработке файла. Базовый класс System.IO.Stream () предназначен для обработки переменного (и, возможно, бесконечного) потока в разных количествах. Он имеет несколько методов чтения, которые будут прогрессировать вниз по потоку на определенное количество байтов. Вам нужно будет использовать эти методы для разделения потока.
Я не могу дать больше информации, потому что ваш сценарий недостаточно конкретен. Можете ли вы дать нам более подробную информацию, разделители записей или примеры строк из файла?
Обновление
Если они имеют фиксированную длину записи, то System.IO.Stream будет работать нормально. Вы даже можете использовать File.Open (), чтобы получить доступ к базовому объекту Stream. Stream.Read имеет перегрузку, которая запрашивает количество байтов для чтения из файла. Поскольку они имеют фиксированную длину записи, это должно хорошо работать для вашего сценария.
Пока вы не вызываете ReadAllText () и вместо этого используете методы Stream.Read (), которые принимают явные байтовые массивы, память не будет проблемой. Базовый класс Stream позаботится о том, чтобы не помещать весь файл в память (это, конечно, если вы не попросите об этом :)).