12

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

4

2 回答 2

10

您可以使用GZipStreamDeflateStream包括 .NET Framework 4 的类。

How to: Compress Files从 MSDN检查。

使用 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();
于 2013-06-13T11:53:52.853 回答
4

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

http://dotnetzip.codeplex.com

优于GZipStream和其他 BCL 产品。它有一个友好的 API 并提供了重要的功能。

于 2013-06-13T12:04:10.023 回答