java怎么用7z的sdk解压一个7z文件,并保存到一个位置? 求方法,sdk的是流,跟文件还差很多,例如,文件头等等。是否是我理解错了,求达人解决。全分送。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 他不是有个什么alone的类,里面直接都写好了main编译了可以用命令行调用,或者你看他怎么写的copy过来? LZMA sdk java版本官网应该有说明!你去看看 官方源代码里的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" ); } 这个是一种命令行方法,其实是调用7z.exe(linux下是7za)进行操作,但是这个貌似是不知道能否成功,而且要新建一个线程做这个事情,还有,这个对cpu的消耗也是比较大。 其实LZMA sdk for java的话,是一种算法的实现,并不是变成一种文档格式,文档格式需要文件头等等。他在java中是一种压缩流这样的东西。“In Java, there is a quasi-standard for FilterOutputStreams”在C++中,是有人实现过自己合并成7z文件的,但是在java中,我没找到,也很懒,不想自己写,想看看各位有没相关的类? 貌似这并不是用来调用7z.exe,7z.exe确实支持命令行调用,但是这里应该不是,main里面很明显。如果是解压缩。他实例一个SevenZip.Compression.LZMA.Decoder然后通过这个解码器里的Code方法来解压缩而且为什么要新建一个线程? 楼主可以把这个包放到你的项目中,然后copy Lzma.java main函数中有关解码的部分就行了 http://topic.csdn.net/u/20100517/13/85af058e-a6de-4606-a759-f6e7e8a8ee7d.html 可能我描述得不清楚,sdk里面的只是用lzma的算法,把一个文件加密,然后写成一个文件,但这个并不是一个标准的7z文件,这只是一个算法压缩过的数据。你可以用二进制查看器,看看7z文件跟这个文件的区别,后者没头的。而原来那个作者我以为他是调用7z工具做,误以为了,呵呵。调用程序系统会新建进程。 7z压缩后的文件的数据组成格式:32头字节 + 压缩数据 + 可变长的尾部Lzma算法只是进行数据压缩,并没有添加头和尾部,这个压缩后的文件格式不完整,用7z工具解压不了,只有添加上头和尾部后才能用工具正常解压。我现在也在做这个任务,添加头和尾部,不知道楼主解决没? 求一个输出菱形的代码 Java , 请问怎样 将表格里的所有数据增加到数据库? 未完成就感觉难以做下去,我又一个失败的程序 如何利用java的多线程对单个文件进行读取 java里如何自动结束多个并发线程 请教一下关于String类的赋值问题 在JNI中如何返回byte[]类型? 请问如何知道对方socket是否关闭 求助求助,java线程的生产者和消费者关系 需要先生产,后消费。 请问各位大虾:Jbuilder里面怎样设置Jdbc 才能连接数据库,如下所示代码 求看看这道面试题目 创建一个子类对象的同时一定会创建 一个父类对象吗?
官网应该有说明!你去看看
{
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"
);
}
他在java中是一种压缩流这样的东西。“In Java, there is a quasi-standard for FilterOutputStreams”
在C++中,是有人实现过自己合并成7z文件的,但是在java中,我没找到,也很懒,不想自己写,想看看各位有没相关的类?
main里面很明显。如果是解压缩。他实例一个
SevenZip.Compression.LZMA.Decoder
然后通过这个解码器里的Code方法来解压缩
而且为什么要新建一个线程?
而原来那个作者我以为他是调用7z工具做,误以为了,呵呵。调用程序系统会新建进程。
Lzma算法只是进行数据压缩,并没有添加头和尾部,这个压缩后的文件格式不完整,用7z工具解压不了,只有添加上头和尾部后才能用工具正常解压。
我现在也在做这个任务,添加头和尾部,不知道楼主解决没?