简体   繁体   English

如何使用C#代码压缩文件?

[英]How to zip file in code in c#?

I am trying to zip file in code. 我正在尝试用代码压缩文件。 The error is in static void method CopyStream at line "dest.Write(buffer, 0, len);". 错误是在“ dest.Write(buffer,0,len);”行的静态void方法CopyStream中。 Error is "Bad state (unknown compression method(0x4D))". 错误是“错误状态(未知压缩方法(0x4D))”。 Any idea why is this happening? 知道为什么会这样吗?

    public byte[] ZippingFile()
    {
        MemoryStream dest = new MemoryStream();
        FileStream file = new FileStream(tbPath.Text + @"\" +    tbFileName.Text, FileMode.Open, FileAccess.Read);
        byte[] array = new byte[0];
        try
        {
            ZlibDecompression(file, dest);
            array = dest.ToArray();

        }
        catch (Exception ex)
        {
            MessageBox.Show("Error: " + ex.Message, "Error", MessageBoxButtons.OK,
                            MessageBoxIcon.Error);
        }
        finally
        {
            file.Close();
            dest.Close();
        }
        return niz;
    }


    private void ZlibDecompression(Stream src, MemoryStream dest)
    {
        src.Seek(0, SeekOrigin.Begin);
        using (ZlibStream zlibStreamOut = new ZlibStream(dest, CompressionMode.Decompress, CompressionLevel.Level4, true))
        {
            CopyStream(src, zlibStreamOut);
            zlibStreamOut.Close();
            dest.Seek(0, SeekOrigin.Begin);
        }
    }

    static void CopyStream(Stream src, Stream dest)
    {
        byte[] buffer = new byte[1024];
        int len = src.Read(buffer, 0, buffer.Length);
        while (len > 0)
        {
            dest.Write(buffer, 0, len);
            len = src.Read(buffer, 0, buffer.Length);
        }
        dest.Flush();
    }

If you are trying to "zip" the file - then you should be using CompressionMode.Compress. 如果您尝试“压缩”文件-那么您应该使用CompressionMode.Compress。 The "unknown compression method(0x4D)" probably means there is a letter M in the position the decompression routine expects to find a code for how the file was compressed - maybe the very first character in your file. “未知的压缩方法(0x4D)”可能意味着解压缩例程期望找到一个有关文件如何压缩的代码的位置字母M-可能是文件中的第一个字符。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM