Java ZIP壓縮和解壓縮文件(解決中文文件名亂碼問題)
學習了:http://www.tuicool.com/articles/V7BBvy
引用原文:
JDK中自帶的ZipOutputStream在壓縮文件時,如果文件名中有中文,則壓縮后的
zip文件打開時發現中文文件名變成亂碼.
解決的方法是使用apache-ant-zip.jar包(見附件)中的ZipOutputStream和ZipEntry.
即,導入類:
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipOutputStream;
並且注意,壓縮之前調用 ZipOutputStream的out.setEncoding(System.getProperty("sun.jnu.encoding")); 方法,
系統參數sun.jnu.encoding表示獲取當前系統中的文件名的編碼方式.這里將ZipOutputStream的文件名編碼方式
設置成系統的文件名編碼方式.
解壓時,直接使用JDK原來的ZipInputStream即可.
但是有個 需要注意 的地方是,在讀取ZIP文件之前,需要設置:
System.setProperty("sun.zip.encoding", System.getProperty("sun.jnu.encoding"));
將系統的ZIP編碼格式設置為系統文件名編碼方式,否則解壓時報異常.
(網上,還有修改ZipInputStream源碼的方式貌似太麻煩了,參考:http://zwllxs.iteye.com/blog/871260)
ZIP代碼參考http://szhnet.iteye.com/blog/199059,有修改.
