private int unzip(String filePath, String zipDir) {
int result = 0;
try {
BufferedOutputStream dest = null;
BufferedInputStream is = null;
ZipEntry entry;
//这一步很重要,如果Windows和Linux编码不统一,要在这一步设定好解压时编码,否则文件名会是乱码
**ZipFile zipfile = new ZipFile(filePath, Charset.forName("SJIS"));**
File dirFile = new File(zipDir);
if (!dirFile.exists()) {
dirFile.mkdir();
}
Enumeration<?> dir = zipfile.entries();
while (dir.hasMoreElements()) {
entry = (ZipEntry) dir.nextElement();
if (entry.isDirectory()) {
File fileObject = new File(zipDir.concat("/").concat(entry.getName()));
fileObject.mkdir();
}
}
Enumeration<?> e = zipfile.entries();
while (e.hasMoreElements()) {
entry = (ZipEntry) e.nextElement();
if (entry.isDirectory()) {
continue;
} else {
is = new BufferedInputStream(zipfile.getInputStream(entry));
int count;
byte[] dataByte = new byte[1024];
FileOutputStream fos = new FileOutputStream(zipDir.concat(
"/").concat(entry.getName()));
dest = new BufferedOutputStream(fos, 1024);
while ((count = is.read(dataByte, 0, 1024)) != -1) {
dest.write(dataByte, 0, count);
}
dest.flush();
dest.close();
is.close();
}
}
zipfile.close();
} catch (Exception e) {
e.printStackTrace();
LogUtils.errorLog(ExceptionUtils.getStackTrace(e));
result = -1;
}
return result;
}
Java程序在Linux解压zip,文件名乱码解决
最新推荐文章于 2024-04-28 19:19:33 发布