给文件取MD5值竟然用了400M内存,叹~,你能将内存降到20M么?
给定一个文件,算出MD5值核心代码如下: 
 //filename是一个文件如: "c:\\test.exe " 
 FileStream   FS   =   new   FileStream(filename,   FileMode.Open,   FileAccess.Read); 
 BinaryReader   BR   =   new   BinaryReader(FS); 
 MD5   md5serv   =   MD5CryptoServiceProvider.Create(); 
 //ReadBytes读取整个文件算出MD5 
 byte[]   buffer   =   md5serv.ComputeHash(BR.ReadBytes((int)FS.Length)); 
 StringBuilder   stringbuff   =   new   StringBuilder(); 
 foreach   (byte   var   in   buffer){ 
 stringbuff.Append(var.ToString( "x2 "));} 
 BR.Close(); 
 GC.Collect();//不加这句算完后内存不降 
 textBox1.Text   =   stringbuff.ToString();//输出值 
 问题描述: 
 我程序运行本身需要17M,为一个400M的文件计算MD5,期间内存达到430M,完成后回到17M,网上一软件WinMD5,运行3M,同样400M文件计算MD5,期间内存达到4M,完成后3M。两程序MD5运算结果相同。各位朋友有没有什么办法让程序内存占用在20M以内?谢谢~
------解决方案--------------------.NET是把所有内容都读到内存里面再运算,当然要占这么多! 
 估计在.NET中没有什么好的方法!MS总是以为我们的内存和硬盘一样大!
------解决方案--------------------分段读取? 不会吧,lz试试,和lz一起等。
------解决方案--------------------自己用BR.ReadBytes怪谁呢。 
 为什么不用public byte[] ComputeHash(Stream inputStream)这个重载?