java zip压缩 解压 乱码 解决
(2012-12-12 17:44:43)
标签:
javazip压缩zip解压乱码it |
用的apache的 ant包
可以设置编码的压缩 和 解压
防止乱码文件名的产生
可能根据不同系统会有不同的编码格式,
我的是win7 所以用的GB2312或者GBK
XP如果有问题换成utf-8
package com.util.export;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;
import org.apache.tools.zip.ZipOutputStream;
public class OperationZip {
public
static void ZIP(String sourcePath, String zipFileName)
throws IOException {
ZipOutputStream zos = new ZipOutputStream(new
File(zipFileName));
// 设置压缩的时候文件名编码为gb2312
zos.setEncoding("gb2312");
File file = new File(sourcePath);
if (file.isDirectory()) {
//
此处使用/来表示目录,如果使用\\来表示目录的话,有可能导致压缩后的文件目录组织形式在解压缩的时候不能正确识别。
ZIPDIR(sourcePath, zos, file.getName() +
"/");
} else {
// 如果直接压缩文件
ZIPDIR(file.getPath(), zos, new
File(file.getParent()).getName() + "/");
ZIPFile(file.getPath(), zos, new
File(file.getParent()).getName() + "/" + file.getName());
}
zos.closeEntry();
zos.close();
}
public
static void ZIPDIR(String sourceDir, ZipOutputStream zos,String
tager) throws IOException {
// System.out.println(tager);
ZipEntry ze = new ZipEntry(tager);
zos.putNextEntry(ze);
// 提取要压缩的文件夹中的所有文件
File f = new File(sourceDir);
File[] flist = f.listFiles();
if (flist != null) {
// 如果该文件夹下有文件则提取所有的文件进行压缩
for (File fsub : flist) {
if (fsub.isDirectory()) {
// 如果是目录则进行目录压缩
ZIPDIR(fsub.getPath(), zos, tager +
fsub.getName() + "/");
}else{
可以设置编码的压缩 和 解压
防止乱码文件名的产生
可能根据不同系统会有不同的编码格式,
我的是win7
XP如果有问题换成utf-8
package com.util.export;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;
import org.apache.tools.zip.ZipOutputStream;
public class OperationZip {

加载中…