Java ZIP壓縮和解壓縮文件(解決中文文件名亂碼問題)


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編碼格式設置為系統文件名編碼方式,否則解壓時報異常.

 

import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
改為
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipOutputStream;ant包里提供ZipOutputStream類的setEncoding("gbk")方法。zos.setEncoding("gbk");

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM