我有一個代碼,它從大小約爲80MB的10個文件中讀取文本。然而,我無法做到這一點成功(取決於我嘗試的方式),它在第3至第7次迭代中失敗。評論過的線是我嘗試閱讀它的方式,每個都失敗了。從多個文件讀取會導致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位「選項。你不喜歡它。 –