• c#利用zlib.net对文件进行deflate流压缩(和java程序压缩生成一样)


    C#自带DeflateStream,生成后的文件和javat生成的不一样,搜索了一下,找到国外一篇文章:

    http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/65537603-d7db-4e66-b5e6-d08275a4e4c8/

    也是同样的问题,其中的一个回复是:

    The problem is that DeflateStream in c# does not use the same compression algorithm than Deflater in java(and probably objective C).

    Instead, try to use the zlib.net library: http://www.componentace.com/zlib_.NET.htm

    =====================================

    下载引用zlib.net,调用CompressFile()方法,问题解决。

     public static void CopyStream(System.IO.Stream input, System.IO.Stream output)
            {
                byte[] buffer = new byte[2000];
                int len;
                while ((len = input.Read(buffer, 0, 2000)) > 0)
                {
                    output.Write(buffer, 0, len);
                }
                output.Flush();
            }
    
            private void compressFile(string inFile, string outFile)
            {
               
                System.IO.FileStream outFileStream = new System.IO.FileStream(outFile, System.IO.FileMode.Create);
                zlib.ZOutputStream outZStream = new zlib.ZOutputStream(outFileStream, zlib.zlibConst.Z_DEFAULT_COMPRESSION);
                System.IO.FileStream inFileStream = new System.IO.FileStream(inFile, System.IO.FileMode.Open);
                try
                {
                    CopyStream(inFileStream, outZStream);
                }
                finally
                {
                    outZStream.Close();
                    outFileStream.Close();
                    inFileStream.Close();
                }
            }
            private void decompressFile(string inFile, string outFile)
            {
                System.IO.FileStream outFileStream = new System.IO.FileStream(outFile, System.IO.FileMode.Create);
                zlib.ZOutputStream outZStream = new zlib.ZOutputStream(outFileStream);
                System.IO.FileStream inFileStream = new System.IO.FileStream(inFile, System.IO.FileMode.Open);
                try
                {
                    CopyStream(inFileStream, outZStream);
                }
                finally
                {
                    outZStream.Close();
                    outFileStream.Close();
                    inFileStream.Close();
                }
            }
  • 相关阅读:
    Object-C,NSSet,不可变集合
    NYIST 860 又见01背包
    NYIST 1070 诡异的电梯【Ⅰ】
    HDU 1542 Atlantis
    HDU 4756 Install Air Conditioning
    CodeForces 362E Petya and Pipes
    HDU 4751 Divide Groups
    HDU 3081 Marriage Match II
    UVA 11404 Palindromic Subsequence
    UVALIVE 4256 Salesmen
  • 原文地址:https://www.cnblogs.com/gdjlc/p/2758694.html
Copyright © 2020-2023  润新知