C#语言写了一个压缩程序,尝试了几种方式的压缩
1.winrar命令行压缩
2..net GzipStream压缩
3.IGzipCSharp组件压缩但是问题是压缩后的文件在linux系统里不能正确解压,linux系统的解压方式为gzip命令解压。我不能改变linux的解压方式,那我应该怎么修改我的程序,怎么实现windows和linux兼容的解压缩
linuxwindowsc#

解决方案 »

  1.   

    winrar肯定是不认了,你试试zip压缩,linux是支持zip的解压的。至于用C#压缩文件,那个文件名信息如何嵌入没研究过。
      

  2.   

    不能改用zip,因为银行那边认定gzip压缩算法,还有其他方式么
      

  3.   

    我试过用GZipStream直接把Stream写到文件里,然后在linux下用gzip直接解。如果他提示认不出文件格式的话,就把文件后缀改成.z
    想压缩多个文件可以看下这个
    http://www.codeproject.com/Tips/319438/How-to-Compress-Decompress-directories
      

  4.   

    .gz没问题cp a.z b.gz
    gzip -d a.z
    gzip -d b.gz
    cat a
    cat b
      

  5.   

                using (GZipStream stream = new GZipStream(File.Create("test.gz"), CompressionMode.Compress))
                {
                    byte[] bytes = Encoding.Default.GetBytes("123");
                    stream.Write(bytes, 0, bytes.Length);
                }
    gzip -d test.gz
    cat test
    ====
    123我这边没问题啊
    gzip -V
    ====
    gzip 1.3.5
    (2002-09-30)
    Copyright 2002 Free Software Foundation
    Copyright 1992-1993 Jean-loup Gailly
    This program comes with ABSOLUTELY NO WARRANTY.
    You may redistribute copies of this program
    under the terms of the GNU General Public License.
    For more information about these matters, see the file named COPYING.
    Compilation options:
    DIRENT UTIME STDC_HEADERS HAVE_UNISTD_H HAVE_MEMORY_H HAVE_STRING_H HAVE_LSTAT 
    Written by Jean-loup Gailly.
      

  6.   

    原来你不是自己解压缩测试的啊,你最好先自己搭建Linux环境测试解压缩是否正常,很难保证对方是不是SB。
      

  7.   

    我没用过linux系统  解压的话是银行端负责。。
      

  8.   

    不然你把压缩文件传给我或者silwol测试,我们都有Linux环境,如果购买过虚拟主机的话,也会有Linux环境。
      

  9.   

    今天重新测试了.net的GZipStream压缩,就行了,估计前2天是代码哪写错了。但是现在又想请教一个问题怎么把多个文件压缩到一个GZip文件里,并且解压出来也是多个文件
      

  10.   

    兄弟,能把你压缩代码贴一下嘛,我也遇到这个问题了,C# GZipStream 压缩后,liunx端没办法解压缩,用winrar看了,我压缩了三个文件,最后会合并到一个文件中的