⑴ 怎麼用java解壓winrar加密的zip包(不要調用winrar的命令)
文件中數據冗餘的最簡單的類型是"字元的復制"。讓我們先來看下面一個字元串:
JJJJJJAAAAVVVVAAAAAA
這個字元串可以用更簡潔的方式來編碼,那就是通過替換每一個重復的字元串為單個的實例字元加上記錄重復次數的數字來表示,上面的字元串可以被編碼為下面的形式:6J4A4V6A
在這里,"6J"意味著6個字元J,"4A"意味著4個字元A,以此類推。這種字元串壓縮方式稱為"行程長度編碼"方式,簡稱RLE。
再舉一個例子,考慮一下矩形圖像的存儲。一個單色點陣圖,可以被存儲為下面這種形式。
另外一種方式是將圖像存為一個圖元文件:
Rectangle 11, 3, 20, 5
上面的表示方法是講矩形的起始坐標是(11,3),寬度是20,高度是5。
上述的矩形圖像可以使用RLE編碼方式壓縮,通過對相同位記數表示如下:
0, 40
0, 40
0,10 1,20 0,10
0,10 1,1 0,18 1,1 0,10
0,10 1,1 0,18 1,1 0,10
0,10 1,1 0,18 1,1 0,10
0,10 1,20 0,10
0,40
上面第一行是講圖像的第一行由40個0組成。第三行是遲寬行講圖像的第三行是由10個0加上20個1再加上10個0組成,其它行以此類推。
大家注意,RLE方法需要將其表示的文件與編碼文件分開。所以,這種方法不能應用於所有的文件。其它的壓縮技術包括變長編碼(也被稱為哈夫曼編碼),還有其它的方法。要想了解更詳細的信息,請參考有關數據和圖像壓縮技術方面的圖書,一定會有收獲的。
數據壓縮有很多益處。不管怎麼說,最主要的好處就是減少存儲方面的需求。同樣的,對於數據通信來講,壓縮數據在媒體中的將導致信息傳輸數據的提升。數據的壓縮能夠通過軟體在現有的硬體設備上實現或者通過帶有壓縮技術的特殊的硬體設備來實現。
ZIP VS GZIP
如果你是在Windows系統下工作,你可能會對工具WinZip很熟悉,是用來創建壓縮檔案和解開壓縮檔案的。而在UNIX平台上,會有一些不同,命令tar用來創建一個檔案文件(並不壓縮),其它的程序(gzip或compress)用來創建一個壓縮檔案。
WinZip和PkZip之類的工具同時扮演著歸檔和壓縮兩個角色。他們將文件壓縮並將其歸檔。另一方面,gzip並不將文件歸檔。所以,在UNIX平台上,命令tar通常用來創碼嘩建一個檔案文件,然後命令gzip來將檔案文件壓縮。
Java.util.zip包
Java提供了java.util.zip包用來兼容ZIP格式的數據壓縮。它提供了一系列的類用來讀取,創建,修改ZIP和GZIP格式的文件。它還提供了工具類來計算任意輸入流的數目,這可以用來驗證輸入數據的有效性。該包提供了一個介面,十四個類,和兩個異常處理類,如表1所示。
表1: java.util.zip包
條目 類型 描述
Checksum 介面 被類Adler32和CRC32實現的介面
Adler32 類 使用Alder32演算法來計算Checksum數目
CheckedInputStream 類 一個輸入流,保存著被讀取數據的Checksum
CheckedOutputStream 類 一個輸出流,保存著被讀取數據的Checksum
CRC32 類 使用CRC32演算法來計算巧賀Checksum數目
Deflater 類 使用ZLIB壓縮類,支持通常的壓縮方式
DeflaterOutputStream 類 一個輸出過濾流,用來壓縮Deflater格式數據
GZIPInputStream 類 一個輸入過濾流,讀取GZIP格式壓縮數據
GZIPOutputStream 類 一個輸出過濾流,讀取GZIP格式壓縮數據
Inflater 類 使用ZLIB壓縮類,支持通常的解壓方式
InlfaterInputStream 類 一個輸入過濾流,用來解壓Inlfater格式的壓縮數據
ZipEntry 類 存儲ZIP條目
ZipFile 類 從ZIP文件中讀取ZIP條目
ZipInputStream 類 一個輸入過濾流,用來讀取ZIP格式文件中的文件
ZipOutputStream 類 一個輸出過濾流,用來向ZIP格式文件口寫入文件
DataFormatException 異常類 拋出一個數據格式錯誤
ZipException 異常類 拋出一個ZIP文件
注意:ZLIB壓縮類最初是作為可移植的網路圖像文件格式(PNG)標準的一部分開發的,是不受專利保護的。
從ZIP文件中解壓縮和提取數據
java.util.zip包提供了數據壓縮與解壓縮所需要的類。ZIP文件的解壓縮實質上就是從輸入流中讀取數據。Java.util.zip包提供了類ZipInputStream來讀取ZIP文件。ZipInputStream流的創建與其它輸入流的創建沒什麼兩樣。舉個例子,下面的代碼段創建了一個輸入流來讀取ZIP格式的文件:
FileInputStream fis = new FileInputStream("figs.zip");
ZipInputStream zin = new ZipInputStream(new BufferedInputStream(fis));
ZIP輸入流打開後,你可以使用getNextEntry方法來讀取ZIP文件中的條目數,該方法返回一個ZipEntry對象。如果到達文件的尾部,getNextEntry返回null:
ZipEntry entry;
while((entry = zin.getNextEntry()) != null) {
// extract data
// open output streams
}
現在,你應該建立一個輸出流,如下所示:
int BUFFER = 2048;
FileOutputStream fos = new FileOutputStream(entry.getName());
BufferedOutputStream dest = new BufferedOutputStream(fos, BUFFER);
注意:在這段代碼中我們用BufferedOutputStream代替了ZIPOutputStream。ZIPOutputStream和GZIPOutputStream使用內置的512位元組緩沖。當緩沖區的大小大於512位元組時,使用BufferedOutputStream才是正確的(例子中設置為2048)。ZIPOutputStream不允許你設置緩沖區的大小,GZIPOutputStream也是一樣,但創建 GZIPOutputStream 對象時可以通過構造函數的參數指定內置的緩沖尺寸。
這段代碼中,使用ZIP內含的條目名稱創建一個文件輸出流。可以使用entry.getName來得到它的返回句柄。接著讀出被壓縮的源數據,然後寫入輸出流:
while ((count = zin.read(data, 0, BUFFER)) != -1) {
//System.out.write(x);
dest.write(data, 0, count);
}
最後,不要忘記關閉輸入和輸出流:
dest.flush();
dest.close();
zin.close();
常式1的源程序UnZip.java顯示如何解壓縮並從ZIP檔案中將文件釋放出來。測試這個例子,編譯這個類,並運行它,傳給它一個ZIP格式的文件作為參數:
prompt> java UnZip somefile.zip
注意:somefile.zip應該是一個ZIP壓縮檔案,可以用任何一種ZIP壓縮工具來創建,例如WinZip。
⑵ 手機java軟體可以用WINRAR壓縮軟體打開嗎
jar文件可以用winrar打雀蠢開啊
不過只能看到組成部分
缺乏組輪歲旦件肯定無法運行程序
我記得有款win的軟體叫手機頑童臘擾的
那個可以運行
⑶ java 調用winrar命令 生成帶默認路徑的自解壓包和創建桌面圖標
沒事兒沒事兒
痴痴肆宴
到時候分給我山爛就行逗雹漏了
雖然我不會
哈哈~~
⑷ 怎樣用JAVA解壓winrar加密的zip包(不要調用winrar的命令)
WinRAR <命令> -<參數1> -<參數N> <壓縮包> <文件...> <@列表文件...> <解壓縮路徑\>
命令 要 WinRAR 運行的字元組合代表功能
參數 切換操作指定類型,壓縮強度,壓縮包類型,等等的定義。
壓縮包 要進行的壓縮包名。
文件 要進行的文件名。
列表文件 列表文件是包含要處理文件名稱的純文本。文件名應該在第一卷啟動。可以在列表文件中使用//字元後添加註釋。例如,你可以包含兩列字元串創建 backup.lst: c:\work\doc\*.txt //備份文本文檔 c:\work\image\*.bmp //備份圖片 c:\work\misc 並接著運行: rar a backup @backup.lst 你可以在命令行中同時指定普通的文件名和列表文件名。
解壓縮路徑 只與命令 e 和 x ,搭配使用。指出解壓縮文件添加的位置。如果文件夾不存在時,會自動創建。
注意事項
a) 如果未指定 文件 或是 列表文件 時,WinRAR 將會以預設的 *.* 運行全部的文件;
b) 如果未指定壓縮包擴展名時,WinRAR 將會使用在 壓縮配置 中選定的默認壓縮格式。但你可以指定 .RAR 或 .ZIP 擴展名來替換它們;
c) 在命令行所輸入的參數會替換相同的配置設置值;
d) 在命令 c、e、s、t、rr、k 和 x 可在壓縮包名中使用通配符。如此可以用單一的命令來進行超過一個以上的壓縮包,除此之外,如果你指定 -r 參數於這些命令時,它們將會搜索在子文件夾中的壓縮包;
e) 某些命令和參數只應用在 RAR 壓縮包,有些則在 RAR 和 ZIP 都可使用,而某些則可應用在全部的壓縮格式。這一些都得看壓縮格式所提供的特性而定;
f) 命令和參數的大小寫是相同意思的,你可以用大寫或者小寫來下命令均可
⑸ 怎麼用JAVA解壓winrar加密的zip包
WinRAR - - 命令 要 WinRAR 運行的字元組合代表功能 參數 切換操作指定類型,
⑹ WinRAR格式在手機JAVA中需要解壓嗎
需要.解壓後,選擇jar文件就可以在手機里用了
⑺ JAVA調用WinRar文件夾有空格無法壓縮怎麼辦
Process process = new Process();
process.StartInfo.FileName = "WinRar.exe";
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
process.StartInfo.CreateNoWindow = false;
process.StartInfo.Arguments = "a -r -ep1 " + Request.PhysicalApplicationPath+"t est.rar "
+ Request.PhysicalApplicationPath + "up load\\人員 信息.xls"+" rar";
process.Start();
⑻ 請問怎樣利用WinRAR把 原來解壓的JAVA文件還原成JAR 文件
好型WinRAR沒有這個功能吧。可以用命令打包成jar.
一.jar命令參數:
jar命令格式:jar {c t x u f }[ v m e 0 M i ][-C 目錄]文件名...
其中{ctxu}這四個參數必須選選其一。[v f m e 0 M i ]是可選參數,文件名也是必須的。
-c 創建一個jar包含彎
-t 顯示jar中的內容列表
-x 解壓jar包
-u 添加文件到jar包中
-f 指定jar包的文件名
-v 生成詳細的報造,並輸出至標准設備
-m 指定manifest.mf文件.(manifest.mf文件中可以對jar包及其中的內容作一些一設置)
-0 產生jar包時不對其中的內容進行壓縮處理
-M 不產生所有文件的清單文件(Manifest.mf)。這個參數與忽略掉-m參數的設置
-i 為指定的jar文件創建索引文件
-C 表示轉到相應的目錄下執行jar命令,相當於cd到那個目錄,然後臘冊不帶-C執行jar命令
本文來自CSDN博客談局悶,轉載請標明出處:http://blog.csdn.net/jacklvkena/archive/2007/10/01/1809011.aspx
⑼ java 調用winrar命令 生成帶默認路徑的自解壓包和創建桌面圖標
從路子上說有問題,一個是w的,一個是跨平台的。好在java自己有解壓。。