先来看实现:
namespace DSTDownloader
{
class __Compress__
{
string dirpath=@".\temp\";
protected void compressfile(FileInfo fi)
{
using (FileStream inFile = fi.OpenRead())
{
if ((File.GetAttributes(fi.FullName)&FileAttributes.Hidden)!=FileAttributes.Hidden&fi.Extension!=".dst")
{
using (FileStream outFile = File.Create(fi.FullName + ".dst"))
{
using (GZipStream Compress = new GZipStream(outFile, CompressionMode.Compress))
{
inFile.CopyTo(Compress);
}
}
}
}
}
protected bool decompressfile(FileInfo fi,string fileext)
{
try
{
using (FileStream inFile = fi.OpenRead())
{
string curFile = fi.FullName;
string origName = curFile.Remove(curFile.Length - fi.Extension.Length);
using (FileStream outFile = File.Create(origName + fileext))
{
using (GZipStream Decompress = new GZipStream(inFile, CompressionMode.Decompress))
{
Decompress.CopyTo(outFile);
}
}
}
return true;
}
catch(Exception)
{
System.Windows.Forms.MessageBox.Show("读取更新包失败,请联系管理员!","错误");
return false;
}
}
}
class MyCompress : __Compress__
{
//public void CompressFile(FileInfo FI)
//{
// compressfile(FI);
//}
public bool Decompressfile(FileInfo FI,string filext)
{
return decompressfile(FI, filext);
}
}
}
有一个基类,__Compress__,所有压缩的算法都在里面,MyCompress类继承于__Compress__,提供了压缩的接口。