c#里一般可以使用两种方式来压缩文件,第一种为使用GZipStream类,这个类是MS提供的;第二种为使用SharpZipLib库,这个类非MS官方提供,但被大家广泛使用。下面分别给出这两种压缩文件方式的简单实现代码:
1、使用CZipStream:
CZipStream位于 System.IO.Compression命名空间中,下面是我自己写的练习代码:
private void btnCSZip_Click(object sender, EventArgs e) //压缩 测试压缩G:\压缩文件测试\WORK文件夹下的所有内容
{ //压缩 G:\文件读写\setup.exe
try
{
//FileStream fsIn = new FileStream(@"G:\文件读写\setup.exe", FileMode.Open, FileAccess.Read);
FileStream fsIn = new FileStream(@"G:\文件读写\1.xls", FileMode.Open, FileAccess.Read);
int iBfInLength=(int)(fsIn.Length);
byte[] btBufferIn = new byte[iBfInLength];
int iTemp = fsIn.Read(btBufferIn, 0, iBfInLength);
if (iTemp != iBfInLength)
{
MessageBox.Show("读入文件流发生错误");
return;
}
fsIn.Close();
FileStream fsOut=new FileStream(@"G:\文件读写\setupexe.zip", FileMode.Create, FileAccess.Write);
GZipStream gzs = new GZipStream(fsOut, CompressionMode.Compress);
gzs.Write(btBufferIn, 0, iBfInLength);
gzs.Close();
fsOut.Close();
MessageBox.Show("文件压缩完成");
}
catch(Exception e1)
{
MessageBox.Show(e1.Message);
}
}
private void btnCSUnzip_Click(object sender, EventArgs e) //解压缩
{//解压缩 G:\文件读写\setupexe.zip 到test.xls
try
{
FileStream fsIn = new FileStream(@"G:\文件读写\setupexe.zip", FileMode.Open, FileAccess.Read);
GZipStream gzs = new GZipStream(fsIn, CompressionMode.Decompress); //这行就开始报错了
int iLength=40960;
byte[] btBuffer = new byte[iLength];
int iCount = 0;
FileStream fsOut = new FileStream(@"G:\文件读写\test.xls", FileMode.Create, FileAccess.Write);
while ((iCount = gzs.Read(btBuffer, 0, iLength)) > 0)
{
fsOut.Write(btBuffer, 0, iCount);
}
fsOut.Close();
gzs.Close();
fsIn.Close();
MessageBox.Show("文件解压缩完成");
}
catch (Exception e1)
{
MessageBox.Show(e1.Message);
}
}