C#用GZipStraem做一个分卷压缩程序
艾米01 2011-12-07 07:29:30 C#用GZipStraem做一个分卷压缩程序,但是我的程序运行后,压缩的分卷文件解压的时候报数据损坏或者是不存在该压缩文件。大虾们,帮忙看看,或者有米有好的建议,谢谢!
FileStream fst = null, ToPut = null;
fst = new FileStream(srcFilename, FileMode.Open, FileAccess.Read);
ToPut = new FileStream(zipFileName, FileMode.Create, FileAccess.Write);
GZipStream zipStream = null;
bool result;
if (!File.Exists(srcFilename))
result = false;
int FileLength = Convert.ToInt32(fst.Length);
//根据一次传输的大小
int FileSize;
if (SectSize < FileLength)
{
byte[] Secbuffer = new byte[SectSize];
int copied = 0;
while (copied <= ((int)FileLength - SectSize))
{
FileSize = fst.Read(Secbuffer, 0, SectSize);//从0开始读,每次最大读SectSize
fst.Flush();
ToPut.Write(Secbuffer, 0, SectSize);
ToPut.Flush();
ToPut.Position = fst.Position;//当前流的位置
copied += FileSize;
int i = copied / SectSize;
zipFileName = @"F:\1\" + i.ToString() + ".rar";
if (!File.Exists(zipFileName))
{
ToPut = File.Create(zipFileName);
ToPut.Write(Secbuffer, 0, SectSize);
ToPut.Flush();
ToPut.Position = fst.Position;
//ToPut = File.Create(zipFileName);
//zipStream = new GZipStream(ToPut, CompressionMode.Compress);
//zipStream.Write(Secbuffer, 0, Secbuffer.Length);
}
}
int left = (int)FileLength - copied;
FileSize = fst.Read(Secbuffer, 0, left);
fst.Flush();
ToPut.Write(Secbuffer, 0, left);
ToPut.Flush();