问题 .net framework 4.0中的文件压缩c#


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


12220
2018-06-13 11:51


起源

如果你想要一个免费的第三方组件,我有很好的经验 SharpZipLib 它支持其他格式。 - Chris Sinclair


答案:


您可以使用 GZipStream 和 DeflateStream 包括.NET Framework 4的类。

检查 How to: Compress Files 来自MSDN。

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

一个例子来自 这里

使用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();

10
2018-06-13 11:53





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

http://dotnetzip.codeplex.com

比...更好 GZipStream 和其他BCL产品。它具有友好的API并提供重要的功能。


4
2018-06-13 12:04