问题描述:
使用ICSharpCode.SharpZipLib.dll该控件。
在使用该控件时会这样使用使用
FileStream fs = fi.OpenRead();
byte[] buffer = new byte[fs.Length];
int[] buffer = new int[fs.Length];
fs.Read(buffer, 0, buffer.Length);
但是问题来了,我有一个数据库备份文件有300MB,进行到最后一行fs.Read(buffer, 0, buffer.Length)的时候,报错,提示资源不足,无法完成。于是考虑到文件太大,所以准备分割读入buffer,于是写了下面这么一段:
                           FileStream fs = fi.OpenRead();
byte[] buffer = new byte[fs.Length];
if (fs.Length<1024)
{
fs.Read(buffer, 0, buffer.Length);
}
else
{
int   size=0;   
size   =   fs.Read(buffer,0,1024);   
int   i=0;

if (size == 1024)
{
while(size==1024)   
{   
size   =   fs.Read(buffer,i,1024);  

i+=1024;   
}   
}

}如此写下,之后确实可以通过压缩大文件了,但是完成后我发现300MB的文件居然压成了20MB左右,有些不可思议。于是解压后尝试恢复数据库,提示数据库文件已经破损。说明上的方法还是有问题,如此分批读,最终导致文件破损?请高手指教在下。