怎么解決java解壓zip包出現亂碼?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
解決思路:
首先判斷需要解壓的文件是否存在或路徑是否正確,接著判斷路徑是否存在,若不存在則創建路徑,然后判斷壓縮文件是否合法,最后設置文件名稱編碼為“GBK”即可。
示例代碼:
package com.yunfei.fts; import java.io.File; import net.lingala.zip4j.core.ZipFile; import net.lingala.zip4j.model.ZipParameters; import net.lingala.zip4j.util.Zip4jConstants; public class ZipUtil { /** * todo zip解壓縮 * @param source 壓縮文件全路徑 * @param target 要解壓路徑 * @param targetName 解壓文件夾名稱 */ public static void unzip (String source,String target,String targetName) throws Exception{ try { File file = new File(source); if(!file.exists() || file.isDirectory()){ throw new Exception("將要解壓文件不存在或路徑填寫不正確!"); } file = new File(target+File.separator+targetName); if(!file.exists()){ file.mkdirs(); System.out.println("路勁不存在,創建路徑"); } ZipFile zipfile = new ZipFile(source); if (!zipfile.isValidZipFile()) { throw new Exception("壓縮文件不合法,可能被損壞."); } zipfile.setFileNameCharset("GBK"); zipfile.extractAll(target+File.separator+targetName); } catch (Exception e) { e.printStackTrace(); throw e; } } /** * todo 生成zip壓縮 * @param source 要壓縮文件全路徑 * @param target 壓縮文件存放路徑 * @param targetName 解壓文件名稱 */ public static void zip (String source,String target,String targetName) throws Exception{ try { File file = new File(target); if(!file.exists()){ file.mkdirs(); System.out.println("解壓存儲路勁不存在,創建路徑"); } file = new File(source); if(!file.exists()){ throw new Exception("將要解壓文件不存在或路徑填寫不正確!"); } ZipFile zipfile = new ZipFile(target+File.separator+targetName); zipfile.setFileNameCharset("GBK"); ZipParameters params = new ZipParameters(); params.setCompressionMethod(Zip4jConstants.COMP_DEFLATE); // 壓縮方式 params.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL); // 壓縮級別 //zipfile.cr if(file.isFile()){ zipfile.addFile(file, params); }else{ zipfile.addFolder(source, params); } } catch (Exception e) { e.printStackTrace(); throw e; } } public static void main(String[] args) { try { unzip("d:\\home.zip","e:\\","test"); zip("D:\\home","e:\\","test.zip"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
看完上述內容,你們掌握解決java解壓zip包出現亂碼的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。