可以使用 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+"/"就是用來表示一個具體的文件的路徑的
希望對你有所幫助!