У меня есть код, который читает текст из 10 файлов размером примерно 80 МБ. Тем не менее, я не могу сделать это успешно, поскольку (в зависимости от того, как я пытался), он терпит неудачу на третьей-седьмой итерации. Пронумерованные строки - это способы, с помощью которых я пытался их прочесть, каждый из них терпит неудачу.Чтение из нескольких файлов вызывает исключение OutOfMemory
var lines = new List<string>();
var text = string.Empty;
for (int i = 0; i < 10; i++)
{
try
{
//lines.AddRange(File.ReadAllLines(dirPath + string.Format(@"commands{0}.txt", i)));
//lines.Add(File.ReadAllText(dirPath + string.Format(@"commands{0}.txt", i)));
//lines.Add(text);
var bytes = File.ReadAllBytes(dirPath + string.Format(@"commands{0}.txt", i));
text += Environment.NewLine + System.Text.Encoding.UTF8.GetString(bytes);
}
catch (Exception e)
{
//OutOfMemory exception
}
}
Что я делаю неправильно? Что именно закрывается? MB разрешено для приложения, длина строки, количество элементов в списке? И т.д.?
Что вы делаете с этим «текстом» впоследствии? Возможно, было бы более удобно хранить его в виде байтового массива, если вы просто собираетесь его записать позже, или преобразовать массив байтов непосредственно в строку одновременно, а не в файл за раз. –
Вы просто свободны от памяти. Вопрос слишком груб, чтобы предоставить альтернативу, никто не может понять, почему вам нужно хранить столько текста. Но это, безусловно, очень старомодная проблема. «Проект»> «Свойства»> «Вставить вкладку» и отключить опцию «Предпочитайте 32-разрядную». Ты не хочешь этого. –