1.当我们拿到一个文件之后,我们会把它压缩然后压缩,然后读取流。这样中间会有很多次落地成文件很不方便。
有一个简单的办法如下方法。别人拿到这个压缩后的byte[] 可以之间转换成zip的压缩文件。
/** * 源流 转换成ZIP流 * * @param sourceData * @return byte[] */ public byte[] getZipByte(byte[] sourceData, String name) { ByteArrayOutputStream bos = new ByteArrayOutputStream(); ZipOutputStream zip = new ZipOutputStream(bos); try { ZipEntry entry = new ZipEntry(name); entry.setSize(sourceData.length);//返回条目数据的未压缩大小;如果未知,则返回 -1。 zip.putNextEntry(entry);// 开始写入新的 ZIP 文件条目并将流定位到条目数据的开始处 zip.write(sourceData);//将字节数组写入当前 ZIP 条目数据。 } catch (Exception ex) { logger.info("---压缩流失败---"); logger.error(ex.getMessage()); } finally { try { zip.closeEntry(); zip.close(); } catch (IOException e) { logger.error(e.getMessage()); } return bos.toByteArray(); } }
下边这个方法可以吧源