import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
//注意这两个包是来自apache的
//JDK自带的
//java.util.zip
//没办法解决乱码问题
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipOutputStream;
public class FileToZipUtil{
public static boolean zipFileAll(String sourceFilePath, String zipFilePath,
String fileName) {
boolean flag = false;
InputStream input = null;
ZipOutputStream zipOut = null;
try {
File file = new File(sourceFilePath);
File zipFile = new File(zipFilePath + File.separator + fileName
+ ".zip");
zipOut = new ZipOutputStream(new FileOutputStream(zipFile));
if (file.isDirectory()) {
File[] files = file.listFiles();
for (int i = 0; i < files.length; ++i) {
//只压缩当前用户点击导出创建的文件
input = new FileInputStream(files[i]);
zipOut.putNextEntry(new ZipEntry(files[i].getName()));
int temp = 0;
while ((temp = input.read()) != -1) {
zipOut.write(temp);
}
//这一句很关键
zipOut.setEncoding("gbk");
input.close();
//删除压缩前的文件
files[i].delete();
}
}
flag = true;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (null != zipOut)
zipOut.close();
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
return flag;
}
}
jdk自带压缩乱码
最新推荐文章于 2020-02-18 09:14:39 发布