怎么解决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包出现乱码的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!