引用来自“甘薯”的评论
以下代码已测试通过无误
try {
FileOutputStream fos = new FileOutputStream(targetFilePath);
CheckedOutputStream cos = new CheckedOutputStream(fos, new CRC32());
ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(
cos));
for (int i = 0; i < filePath.length; i++) {
// 逐个将文件写入到br,然后再逐个从br读到压缩文件中。
// BufferedReader br = new BufferedReader(new FileReader(
// filePath[i]));
FileInputStream br = new FileInputStream(new File(
"c:\\test\\" + filePath[i]));
filePath[i] = filePath[i].replaceAll("\\\\", "/");
zos.putNextEntry(new ZipEntry(filePath[i].substring(filePath[i]
.lastIndexOf("/") + 1)));
// int c;
byte[] b = new byte[1024];
int len = 0;
while ((len = br.read(b)) != -1) {
//.re.read()) != -1)
byte [] c = b;
if (len != b.length) {
c = Arrays.copyOf(b, len);
}
zos.write(c);
}
br.close();
}
zos.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}