问题
在Java中,由代码生成的文件,并写入到Zip文件的程序,导出的zip格式文件解压时报CRC校验失败
此问题的原因是,在程序中,把生成好的文件直接写入zip中,如果代码中没有写zip写入完成的状态,那么就会出现此问题
解决方法
在写入zip文件之后,必须增加zip.finish(),这个方法是ZipOutputStream下面的,例如:
ZipOutputStream zip = new ZipOutputStream(new FileOutputStream(zipfile));
byteOut = new ByteArrayOutputStream();
writer = new XMLWriter(byteOut);
writer.write(doc);
byte[] file = byteOut.toByteArray();
writer.close();
byteOut.close();
//开始写入文件
zip.putNextEntry(new ZipEntry(sbsgFkModel.getFkid()+”.xml”));
zip.write(file);
zip.closeEntry();
//结束写入文件
zip.finish();