作者reon (完成這條天堂路)
看板C_Sharp
標題[問題] 處理大型資料陣列無法儲存問題
時間Sat Feb 7 18:47:33 2009
小弟剛學C#不久
最近在練習C#時遇到在處理檔案上的問題
比如說 我今天要讀取一個 700MB的光碟映像檔 算出其MD5值
抑或是 有個好幾百MB的圖檔 要做影像處理
現在的問題是 我用FileStream 讀取這些檔案
卻無法把它放到 byte陣列中 會跳出out of memory
現在想了解說
1.一般在處理這些大檔案 放在陣列的作法是否可行?而其方法為何?
2. 若陣列無法處理這樣大型的資料 那又該如何處理?
感謝版上大大解答^^
補上程式碼
private static byte[] read_file(FileInfo fin)
{
FileStream fs = new FileStream(fin.FullName,FileMode.Open);
StreamReader sr = new StreamReader(fs,Encoding.Default);
byte[] array = Encoding.Default.GetBytes(sr.ReadToEnd());
//在讀取1百多MB的時候還是ok 不過大約超過200MB就會有問題
fs.Close();
sr.Close();
return array;
}
--
最深的祝福是沒有期限的
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.232.245.127
1F:→ james732:貼程式碼上來告訴大家你是怎麼做的吧。 02/07 18:54
※ 編輯: reon 來自: 118.232.245.127 (02/07 21:29)
2F:→ MOONRAKER:MD5不是逐段讀就好了… 02/08 00:58
3F:→ MOONRAKER:處理到後面又不會跑回去參考前面…何必通通放記憶體… 02/08 00:59
4F:→ reon:感謝樓上大大提醒 剛才發現MD5也可以接受Stream參數 02/15 15:16