需要在c#中压缩大于4gb的/ gz文件

时间:2010-02-11 18:24:41

标签: c# compression

我已经为一些事务日志编写了一个soltion,但是其中一些大于4gb,我得到的错误是: -

“gzip流不能包含超过4GB的数据”

好吧所以Compression不支持大于4gb的任何东西,有没有人有任何好的替代库?

3 个答案:

答案 0 :(得分:3)

从技术上讲,Gzip可用于> 4GB,但默认使用标准gzip distribution does not support this。因此,许多与gzip相关的工具(例如.NET GZipStream类)都有4GB的限制。

您可能希望使用商业压缩库。一个例子是.NET Zip,它支持大的压缩大小(通过Zip-64)支持。

答案 1 :(得分:1)

你是如何压缩文件的?您使用的是gzip本身还是库?

Gzip支持> 4GB仅适用于1.3.x版本,尽管已为1.2.4版本提供了补丁。

请参阅Can gzip handle files of more than 4 gigabytes?

另请注意,根据您使用的文件系统可能存在限制,但如果您的文件已经大于4GB,那么我们假设此处没有文件系统限制。

答案 2 :(得分:1)

由于这是一个非常简单的应用程序,我决定从c#

打开一个Winzip实例
    public static void Compress(FileInfo fi)
    {
        System.Diagnostics.Process process;
        process = new System.Diagnostics.Process();
        process.EnableRaisingEvents = true;

        string cmd = string.Format(@"/C ""c:\program files\winzip\WINZIP32.EXE"" -min -a {0} {1}", "C:\\testzipit\\q", fi.FullName  );
        System.Diagnostics.Process.Start("CMD.exe", cmd);
        process.Close();
    }

适用于我想要解决的案例。