[問題] 處理大型資料陣列無法儲存問題

看板C_Sharp作者 (完成這條天堂路)時間17年前 (2009/02/07 18:47), 編輯推噓0(004)
留言4則, 3人參與, 最新討論串1/1
小弟剛學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

02/07 18:54, , 1F
貼程式碼上來告訴大家你是怎麼做的吧。
02/07 18:54, 1F
※ 編輯: reon 來自: 118.232.245.127 (02/07 21:29)

02/08 00:58, , 2F
MD5不是逐段讀就好了…
02/08 00:58, 2F

02/08 00:59, , 3F
處理到後面又不會跑回去參考前面…何必通通放記憶體…
02/08 00:59, 3F

02/15 15:16, , 4F
感謝樓上大大提醒 剛才發現MD5也可以接受Stream參數
02/15 15:16, 4F
文章代碼(AID): #19ZMR8BN (C_Sharp)