求方法,sdk的是流,跟文件还差很多,例如,文件头等等。
是否是我理解错了,求达人解决。全分送。

解决方案 »

  1.   

    他不是有个什么alone的类,里面直接都写好了main编译了可以用命令行调用,或者你看他怎么写的copy过来?
      

  2.   

    LZMA sdk java版本
    官网应该有说明!你去看看
      

  3.   

    官方源代码里的static void PrintHelp()
    {
    System.out.println(
    "\nUsage:  LZMA <e|d> [<switches>...] inputFile outputFile\n" +
    "  e: encode file\n" +
    "  d: decode file\n" +
    "  b: Bench\n" +
    "<Switches>\n" +
    // "  -a{N}:  set compression mode - [0, 1], default: 1 (max)\n" +
    "  -d{N}:  set dictionary - [0,28], default: 23 (8MB)\n" +
    "  -fb{N}: set number of fast bytes - [5, 273], default: 128\n" +
    "  -lc{N}: set number of literal context bits - [0, 8], default: 3\n" +
    "  -lp{N}: set number of literal pos bits - [0, 4], default: 0\n" +
    "  -pb{N}: set number of pos bits - [0, 4], default: 2\n" +
    "  -mf{MF_ID}: set Match Finder: [bt2, bt4], default: bt4\n" +
    "  -eos:   write End Of Stream er\n"
    );
    }
      

  4.   

    这个是一种命令行方法,其实是调用7z.exe(linux下是7za)进行操作,但是这个貌似是不知道能否成功,而且要新建一个线程做这个事情,还有,这个对cpu的消耗也是比较大。
      

  5.   

    其实LZMA sdk for java的话,是一种算法的实现,并不是变成一种文档格式,文档格式需要文件头等等。
    他在java中是一种压缩流这样的东西。“In Java, there is a quasi-standard for FilterOutputStreams”
    在C++中,是有人实现过自己合并成7z文件的,但是在java中,我没找到,也很懒,不想自己写,想看看各位有没相关的类?
      

  6.   

    貌似这并不是用来调用7z.exe,7z.exe确实支持命令行调用,但是这里应该不是,
    main里面很明显。如果是解压缩。他实例一个
    SevenZip.Compression.LZMA.Decoder
    然后通过这个解码器里的Code方法来解压缩
    而且为什么要新建一个线程?
      

  7.   

    楼主可以把这个包放到你的项目中,然后copy Lzma.java main函数中有关解码的部分就行了
      

  8.   

    http://topic.csdn.net/u/20100517/13/85af058e-a6de-4606-a759-f6e7e8a8ee7d.html
      

  9.   

    可能我描述得不清楚,sdk里面的只是用lzma的算法,把一个文件加密,然后写成一个文件,但这个并不是一个标准的7z文件,这只是一个算法压缩过的数据。你可以用二进制查看器,看看7z文件跟这个文件的区别,后者没头的。
    而原来那个作者我以为他是调用7z工具做,误以为了,呵呵。调用程序系统会新建进程。
      

  10.   

    7z压缩后的文件的数据组成格式:32头字节 + 压缩数据 + 可变长的尾部
    Lzma算法只是进行数据压缩,并没有添加头和尾部,这个压缩后的文件格式不完整,用7z工具解压不了,只有添加上头和尾部后才能用工具正常解压。
    我现在也在做这个任务,添加头和尾部,不知道楼主解决没?