java文件讀取zip文件
對於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目錄
⑵ 用java直接讀取zip類型的文件時中文亂碼問題怎麼解決
1.一般是軟體程序解碼錯誤。如瀏覽器把GBK碼當成是Big5碼顯示,或電子郵件程序把對方傳來的郵件錯誤解碼。如果在發送時編碼錯誤,收件者的電郵程序是不能解碼的,需要寄件者的電郵程序重新編碼再寄。
2.字體檔案(font file)不對。
3.來源編碼錯誤,或文件受到破壞。
4.一種語言版本的操作系統安裝了另外一種語言版本的應用程序,或者應用程序安裝的升級補丁的語言版本與應用程序原來安裝的語言版本不一致。
5.早期單位元組的應用程序在打開雙位元組語言的文件時不能正確識別文字的分割,在換行的地方把一個字從中分成兩段,導致緊接在後面的整個一行全部都是亂碼。
6.低版本的應用程序不能識別高版本的程序創建的文件。
7.由於TXD等修改文件出現內部沖突,一些修改游戲的MOD(modification)CLEO、IV補丁、真實補丁、技能補丁、升級補丁和CCI人物補丁等游戲修改軟體的「Readme」「必看!」等閱讀文件會出現亂碼。