解决方案:

从.Net 1.1开始,唯一可用的方法是进入Java库。
在JClass库中使用Zip类使用C压缩文件和数据
不确定在最新版本中是否已更改。

我一直使用SharpZip库。

另一种方法(无需第三方)是使用Windows Shell API。我们需要在Cproject中设置对Microsoft Shell控件和自动化COM库的引用。

另外, .Net 2.0框架名称空间" System.IO.Compression"支持GZip和Deflate算法。这是两种压缩和解压缩字节流的方法,我们可以从文件对象中获取它们。我们可以使用以下方法将" GZipStream"替换为" DefaultStream",以使用该算法。但是,这仍然留下了处理使用不同算法压缩的文件的问题。

public static byte[] Compress(byte[] data)
{
    MemoryStream output = new MemoryStream();

    GZipStream gzip = new GZipStream(output, CompressionMode.Compress, true);
    gzip.Write(data, 0, data.Length);
    gzip.Close();

    return output.ToArray();
}

public static byte[] Decompress(byte[] data)
{
    MemoryStream input = new MemoryStream();
    input.Write(data, 0, data.Length);
    input.Position = 0;

    GZipStream gzip = new GZipStream(input, CompressionMode.Decompress, true);

    MemoryStream output = new MemoryStream();

    byte[] buff = new byte[64];
    int read = -1;

    read = gzip.Read(buff, 0, buff.Length);

    while (read > 0)
    {
        output.Write(buff, 0, read);
        read = gzip.Read(buff, 0, buff.Length);
    }

    gzip.Close();

    return output.ToArray();
}
C# 中压缩/解压缩文件夹和文件

在C#中快速压缩或者解压缩文件和文件夹有什么好方法吗?

日期:2020-03-23 14:39:35 来源:oir作者:oir