代码片段:
先生成临时文件ZIP文件。
ZipOutputStream zos = null;
BufferedInputStream bis = null;
byte[] buffer = new byte[1024];
// 临时文件
zos = new ZipOutputStream(new FileOutputStream("/temp"+ "/Archive.zip"));
向ZIP文件里面写文件数据。
File folder = new File("/source");
for (File file : folder.listFiles()) {
zos.putNextEntry(new ZipEntry("source" + "/" + file.getName())); //自动做成source文件夹。
bis = new BufferedInputStream(new FileInputStream(file));
while ((bis.read(buffer)) != -1) {
zos.write(buffer);
buffer = new byte[1024]; // 防止text file的数据重复
}
zos.flush(); //closeEntry的前面调用。防止数据重复
zos.closeEntry();
bis.close();
}
最后关闭文件流。
zos.close();
如果使用java.util.zip.ZipOutputStream的话,文件名会被自动使用utf-8的格式。这样在中文名啥的就会产生乱码。
改用org.apache.tools.zip.ZipOutputStream,然后用setEncodig方法设置编码就能够解决乱码。