可以使用 Runtime 直接调用 winRar 的命令行命令来解压缩
注意:
1、winRar命令使用,在dos下输入 unrar 就可以看到全部的命令说明。该命令在winRar的安装目录下
2、winRar命令行命令的路径问题,也就是path。要么加入系统变量path中,要么在winRar的安装目录下执行程序
以下是程序代码,解压 test.rar 到当前目录下,密码123
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class TestRunTime {
public static void main(String[] args) {
Runtime run = Runtime.getRuntime();
try {
Process p = run.exec("unrar e test.rar -p123");//执行解压缩命令
BufferedInputStream in = new BufferedInputStream(p.getInputStream());
BufferedReader inBr = new BufferedReader(new InputStreamReader(in));
String lineStr;
while ((lineStr = inBr.readLine()) != null)
System.out.println(lineStr);
// 检查命令是否执行失败。
if (p.waitFor() != 0) {
if (p.exitValue() == 1)// p.exitValue()==0表示正常结束,1:非正常结束
System.err.println("命令执行失败!");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
B. Java中压缩输出流的问题
http://blog.csdn.net/hanshileiai/article/details/6718375
这里刚好有个例子
C. java后台怎么接收一个gzip压缩流,并且解析接受参数
原则上,不需要在代码中处理zip只接收就可以。解析可以按HTTP协议自己解析,也可以使用WEB容器完成
D. java DeflaterInputStream 压缩 输入流
有一个你就读取一个,循环读取就行了。
E. java 压缩流 指定两个文件 压缩到一个压缩文件上,结果两个文件的内容 都写到了 第二个文件上
for (String string : list)
{
BufferedReader in=new BufferedReader(new FileReader(string));
int i=0;
zout.putNextEntry(new ZipEntry(string));
while((i=in.read())!=-1)
{
out.write(i);
}
out.flush();//------------------------------->强制输出缓冲区
in.close();
}
out.close();
F. java 传递压缩文件用什么流
你可以用GZIPInputStream和GZIPOutputStream ,这是专门用来读写压缩流的
G. java中zip压缩输入输出流的问题,ZipEntry()方法里的参数到底什么意思
ZipEntry 用于保存一些被压缩文件的信息,如文件名,最后访问时间,最后修改时间,创建时间,文件大小,crc 校验值 等信息。
ZipEntry 具有一个带 String 类型参数的构造方法:ZipEntry(String name), name 是入口名称,就是打开压缩文件时,看到的里面的文件名称。
可以看一下它的源码,下面是部分源码:
public
,Cloneable{
Stringname;//entryname
longtime=-1;//lastmodificationtime
FileTimemtime;//lastmodificationtime,fromextrafielddata
FileTimeatime;//lastaccesstime,fromextrafielddata
FileTimectime;//creationtime,fromextrafielddata
longcrc=-1;//crc-32ofentrydata
longsize=-1;//uncompressedsizeofentrydata
longcsize=-1;//compressedsizeofentrydata
intmethod=-1;//compressionmethod
intflag=0;//generalpurposeflag
byte[]extra;//
Stringcomment;//optionalcommentstringforentry
...
}
H. java后台怎么压缩流文件大小
多大图片,增加JAVA的内存
I. java Zip压缩输入输出流问题
带目录结构的压缩,以方便解压时得到原目录结构来存放。
J. 请教一个Java压缩流的问题
我来给你解释
1. 因为java压缩文件 不是直接把文件内容压缩,而是把文件内容变成流,然后再压缩哦。
2.base指的是一个文件路径,应该是你存放压缩文件的文件夹的路径。
3.f.isDirectory() 是用来判断f文件是不是一个文件夹。如果是文件夹返回true 如果是一个具体的文件返回false
4.base+"/"这个是用来拼接路径的,base是文件夹路径 /是文件夹路径分割符 比如 C:/Program Files/Java/my.java base表示C:/Program Files/Java / my.java 就是文件名。所以base+"/"就是用来表示一个具体的文件的路径的
希望对你有所帮助!