如何在c#中的代码中压缩文件?

时间:2016-09-05 10:27:13

标签: c# zipfile

我想在代码中压缩文件。错误在静态void方法CopyStream的“dest.Write(buffer,0,len);”行中。错误是“错误状态(未知压缩方法(0x4D))”。知道为什么会这样吗?

    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();
    }

1 个答案:

答案 0 :(得分:1)

如果您尝试“压缩”文件 - 那么您应该使用CompressionMode.Compress。 “未知压缩方法(0x4D)”可能意味着在解压缩例程期望找到文件压缩方式的代码中有一个字母M - 可能是文件中的第一个字符。