java解压zip包出现乱码
解决思路:
首先判断需要解压的文件是否存在或路径是否正确,接着判断路径是否存在,若不存在则创建路径,然后判断压缩文件是否合法,最后设置文件名称编码为“GBK”即可。
免费在线教学视频分享:java教学视频
示例代码:
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;
publicclassZipUtil {
/**
* todo zip解压缩
* @param source 压缩文件全路径
* @param target 要解压路径
* @param targetName 解压文件夹名称
*/
publicstaticvoid unzip (String source,String target,String targetName) throws Exception{
try{
File file = newFile(source);
if(!file.exists() || file.isDirectory()){
thrownewException("将要解压文件不存在或路径填写不正确!");
}
file = newFile(target+File.separator+targetName);
if(!file.exists()){
file.mkdirs();
System.out.println("路劲不存在,创建路径");
}
ZipFile zipfile = newZipFile(source);
if(!zipfile.isValidZipFile()) {
thrownewException("压缩文件不合法,可能被损坏.");
}
zipfile.setFileNameCharset("GBK");
zipfile.extractAll(target+File.separator+targetName);
} catch(Exception e) {
e.printStackTrace();
throwe;
}
}
/**
* todo 生成zip压缩
* @param source 要压缩文件全路径
* @param target 压缩文件存放路径
* @param targetName 解压文件名称
*/
publicstaticvoid zip (String source,String target,String targetName) throws Exception{
try{
File file = newFile(target);
if(!file.exists()){
file.mkdirs();
System.out.println("解压存储路劲不存在,创建路径");
}
file = newFile(source);
if(!file.exists()){
thrownewException("将要解压文件不存在或路径填写不正确!");
}
ZipFile zipfile = newZipFile(target+File.separator+targetName);
zipfile.setFileNameCharset("GBK");
ZipParameters params = newZipParameters();
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();
throwe;
}
}
publicstaticvoid 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相关文章教程:java入门教程