.NET框架4.0 C#中的文件压缩

12

是否有版本为4.0的内置类/示例可用于压缩目录中的特定文件?我在MSDN上找到了一个示例,它使用压缩类,但仅适用于版本4.5及以上。


1
如果你需要一个免费的第三方组件,我推荐使用SharpZipLib,我的使用经验非常好,它支持更多的格式。 - Chris Sinclair
2个回答

11

你可以使用包含在.NET Framework 4中的GZipStreamDeflateStream类进行数据压缩和解压缩。

从MSDN上查看How to: Compress Files

使用System.IO.Compression.GZipStream类来压缩和解压缩数据。您还可以使用System.IO.Compression.DeflateStream类,它使用相同的压缩算法。但是,写入扩展名为.gz的文件的已压缩GZipStream对象可以使用许多常见的压缩工具进行解压缩。

以下是示例,摘自这里

使用GZipStream压缩文件

FileStream sourceFileStream = File.OpenRead("sitemap.xml");
FileStream destFileStream = File.Create("sitemap.xml.gz");

GZipStream compressingStream = new GZipStream(destFileStream,
    CompressionMode.Compress);

byte[] bytes = new byte[2048];
int bytesRead;
while ((bytesRead = sourceFileStream.Read(bytes, 0, bytes.Length)) != 0)
{
    compressingStream.Write(bytes, 0, bytesRead);
}

sourceFileStream.Close();
compressingStream.Close();
destFileStream.Close();

使用GZipStream解压缩文件

FileStream sourceFileStream = File.OpenRead("sitemap.xml.gz");
FileStream destFileStream = File.Create("sitemap.xml");

GZipStream decompressingStream = new GZipStream(sourceFileStream,
    CompressionMode.Decompress);
int byteRead;
while((byteRead = decompressingStream.ReadByte()) != -1)
{
    destFileStream.WriteByte((byte)byteRead);
}

decompressingStream.Close();
sourceFileStream.Close();
destFileStream.Close();

5

这些年来,我做了很多文件压缩工作,目前为止我发现最好的选择是使用DotNetZip。

http://dotnetzip.codeplex.com

它比GZipStream和其他BCL提供的选项更好。它有友好的API并提供了重要的功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接