1. 程式人生 > 其它 >Java ZIP壓縮和解壓縮檔案(解決中文檔名亂碼問題)

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");