C#中好像有关于压缩的库,但是有很多限制,并不能很好的进行自定义压缩。
网上也有一些方法,有使用SharpZipLib的。也有C#使用J#类库中的Zip类压缩文件和数据。各有优缺点吧。
这里使用SevenZipSharp来进行压缩,用起来也比较方便。SevenZipSharp是codeplex的开源项目,其中使用了7-zip的library。
使用的时候需要7z.dll和SevenZipSharp.dll,其中前一个不能直接添加引用,可以把它复制到项目里或者在程序里添加它的路径,像下面这样:
public class Util
{
static Util()
{
SevenZipCompressor.SetLibraryPath(@"d:\My Documents\7z.dll");
}
public static void CompressFiles()
{
SevenZipCompressor tmp = new SevenZipCompressor();
tmp.ArchiveFormat = OutArchiveFormat.Zip;
tmp.CompressFiles(@"D:\test.zip", @"D:\test.txt");
}
}
也可以使用CompressDirectory来压缩目录和CompressFileDictionary自由形式压缩,在codeplex里有文档的下载。现在最新的版本0.58中CompressFileDictionary会有Exception,这在0.36版本里就没有问题。但是0.36版本压缩空文件的时候也会出错。哎,纠结了……