Мне нужно прочитать необработанный текстовый файл размером 1 ГБ с диска в RAM, чтобы выполнить некоторые операции со строками в C #.
string contents = File.ReadAllText(path)
выбрасывает исключения из памяти (неудивительно)
Как лучше всего это сделать?
Я использовал 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);
}