2016-06-07 415 views
-3

我在foreach和讀取文件時,當它讀取文件內容到一個字節數組中時,它碰到了OutOfMemory異常。任何解決方案?對於web.config我已經設置了最大請求。 我嘗試了大部分的方式,但它不工作。File.ReadAllBytes,OutOfMemory讀取大文件時出現異常

string[] dirs = Directory.GetFiles(@"C:\report"); 
foreach (string file in dir) 
{ 
    byte[] fileData = System.IO.File.ReadAllBytes(file); 
} 
+2

該解決方案將圍繞不包含位於'byte []'數組中的文件的全部內容。但不知道如何在程序中使用這些數據,很難提供任何具體的建議。 –

+0

@Yeep,你應該嘗試以塊的形式讀取文件。檢查了這一點http://stackoverflow.com/a/2030865/1654121 –

+0

我的應用程序將直接停止在此代碼,當想要將文件轉換爲字節 – Yeep

回答

1

當處理大文件流時,內容是唯一的選擇。嘗試將更多數據加載到內存中時,您會始終遇到OutOfMemoryException,而不是您的進程的內存。流式傳輸文件或查找內容,而不將其加載到內存中。

+0

我改變緩衝區通過引用這個http://stackoverflow.com/questions/2030847/best-way-to-read-a-large-file-into-a-byte-array -in-c但它是相同的將打到OutOfMemory當我上傳的文件很大 – Yeep

+0

直接將其流式傳輸到磁盤。我沒有提到有關緩衝區的任何信息。問題是,您不能將文件存儲在內存中,存儲方法不相關。 –

+0

所以任何解決方案來存儲一個文件沒有內存,thx提前 – Yeep