對於zip文件,java有自帶類庫java.util.zip;可是要想解壓rar文件只能靠第三方類庫,我試過兩個:com.github.junrar和de.innosystec.unrar,前者解壓時可能會出現crcError,後者pom配置時報錯;利用cmd命令調用winRAR進行解壓,無疑方便快捷很多。
調用cmd命令
public static boolean exe(String cmd) {
Runtime runtime = Runtime.getRuntime(); try {
Process p = runtime.exec(cmd);
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream(),"GBK"));
String line = reader.readLine(); while(line!=null) {
logger.info(line);
line = reader.readLine();
}
reader.close(); if(p.waitFor()!=0) { return false;
}
} catch (IOException e) { // TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) { // TODO Auto-generated catch block
e.printStackTrace();
} return true;
}
首先利用runtime.exec()執行指令,得到process,從process.getInputStream()中獲取回顯字元並列印,列印回顯時可能會出現中文亂碼,這個和操作系統編碼有關,我這里是GBK編碼,所以在new inputstreamReader時加入了編碼參數」GBK「
命令行字元串
如果需要調用cmd命令,如cd等,可寫」cmd c cd 目錄」。對於直接調用exe執行,則可以寫成」exe文件絕對路徑 參數」,在命令行字元串中,含有空格的路徑或者字元串應該再加上引號,即」」exe文件絕對路徑」 」參數」「
winRAR調用
我這里安裝目錄是C:/Program Files/WinRAR,將D:1.rar 解壓到D:,則寫成」」C:/Program Files/WinRAR/unRar.exe」 x -y D:/1.rar D:/」,x代表絕對路徑解壓,-y表示全部確定;壓縮的命令如下:「」C:/Program Files/WinRAR/rar.exe」 a -ep1 D:2.rar D:源目錄」,a表示添加文件到壓縮文件,-ep1表示排除基本目錄,如D:winrar ar這個目錄,如果沒有-ep1那麼壓縮包中會出現winrar目錄路徑,而加了之後就只將當前目錄打包,只有rar目錄
B. 為什麼JAVA軟體壓縮包(ZIP RAR)解壓後有很多後綴class的文件和文件夾,而沒有jar文件
那是java文件的內容,你解壓過頭了,把jar文件也解壓了,那你當然沒法看到jar啊,如果你是解壓zip文件就解壓處class這種文件,建議用文件管理器,改文件的後綴名。如zip的改為jar。這樣應該就可以了安裝了,不需要再解壓了。
希望我的回答對你有用
C. java解壓zip或者tar.gz壓縮包,如何獲得被壓縮文件的
使用Java處理ZIP和TGZ壓縮包涉及ZipInputStream、ZipOutputStream和ZipFile類。當項目需要上傳或下載ZIP包時,開發者通常會利用這些類進行操作。
在基礎概念層面,壓縮文件的生成涉及讀取一個文件夾內容,創建ZipEntry並將其放入ZipOutputStream。然後,通過InputStream讀取源文件內容,將其寫入ZipOutputStream。這種流程形成了壓縮文件的創建。
解壓過程涉及一個特殊的File類,稱為ZipFile。使用Enumeration類可以讀取壓縮文件夾中的文件。解壓文件的過程開始於讀取壓縮文件夾中的文件,生成InputStream後將其寫入解壓輸出流。此操作實現了文件的解壓縮。
總結來說,本文介紹了Java中壓縮文件的壓縮與解壓方式,提供了相關類的使用方法。希望對讀者在項目開發中處理文件壓縮與解壓問題有所幫助。如果本文對您有幫助,請給予支持。
D. 用java實現ftp側壓縮文件的解壓
我們在開發項目的時候,特別是B/S系統,經常會遇到要批量上傳文件的需求,對此需求一般有如下幾個解決方案(以B/S為例):1. 在客戶端提供文件上傳介面,一次上傳一個文件2. 一次上傳多個文件3. 將需要上傳的文件打包,一次上傳到伺服器,並自動解凳脊慶壓到指定目錄1,2方法都有幾個很明顯的不足,用戶工作量大,文件如果過大,在網路環境野局中,上傳的效率低下,另外文件在不同的目錄,是無法進行一次選擇上傳的.所以打包上傳就成為了比較流行的批量文件上傳的解決方案,下面就來一起討論一下在java中如何實現: 主要功能需求: a. 上傳文件,將文件保存在伺服器 b. 讀取伺服器上壓縮文件,解壓到指定目錄 下面就這兩個需求說說編碼實現上傳: 使用了smartupload開源程序 參考鏈棗握接: http://hi..com/liuzy84/blog/item/556318f4fad1cc6fddc4741a.html
E. 在線等回答,請速度,Java中實現對文件夾的加密壓縮,就是說壓縮完後用解壓工具解壓時會提示輸入密碼。。
(1)網路傳輸狀況不好(如斷線過多,開的線程過多,伺服器人太多導致不能連接太多等)導致下載下來的文件損壞!
(2)站點提供的的RAR壓縮包本來就是損壞的(這個本站可以保證,所上傳的視頻及軟體等都經過好幾遍測試,絕對沒問題)。
(3)所使用的下載工具不夠完善,比如有的下載工具多開了幾個線程後,下載的收尾工作很慢,有些時候下載到99%時數據就不再傳輸了,一定要人工操作才能結束(先停止下載接著再開始)。筆者就碰到過好幾次這樣的情況。結果是文件下載下來以後解壓縮到快結束時CRC出錯。
解決方法:本站為防止這樣的事情發生,在每個壓縮包里又加了一個備份,防止因以上原因導致的下載後不能用,還得重新下載的問題,只要你下載下來的那個壓縮包里的備份是好的那就能把壓縮包里的文件恢復能用。
步驟一:雙擊打開需要解壓修復的壓縮包,選擇:工具——修復壓縮文件。
步驟二:出現下邊圖片的修復框,等待修復完成,關閉窗口及解壓縮窗口就可以了。
步驟三:這時你會發現你需要解壓的壓縮包旁邊多了一個壓縮包,名稱為:fixed.***(你下載的視頻名稱).rar ,這個壓縮包就是修復後的解壓縮包,如果修復成功,解壓這個名稱為:fixed.***(你下載的視頻名稱).rar 的壓縮包就可以了。
如果修復不成功,你再修復幾次看看,如果不行,只有再重新下載了
F. java 中的war格式的壓縮包怎麼解壓
你好,這些是打包好的部署包,將這些直接丟如Tomcat WebApp目錄下就可以通過Web訪問了,如果你想看源碼,用解壓縮軟體都可以的,就看這包裡面有沒有源碼了,zip ,winRAR ,7-zip都可以解壓出來,如果想看源碼,沒有的話,找個反編譯的軟體把class文件拖進去就可以看到了..jd-gui 這個可以,網上找找