作者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