我认为您可以为zip创建一个临时文件,将其添加到gzip,然后删除创建的zip。下面的代码示例应该可以帮助您。
public void ZIPandGZIP(String fileName, OutputStream os, String header) throws FileNotFoundException { byte[] buffer = new byte[1024]; FileInputStream fis = null; FileOutputStream fos = null; ZipOutputStream zos = null; File tempZipFile = File.createTempFile(fileName, ".zip") try { fos = new FileOutputStream(tempZipFile); zos = new ZipOutputStream(fos); ZipEntry ze = new ZipEntry(fileName); zos.putNextEntry(ze); fis = new FileInputStream(fileName); int len; while ((len = fis.read(buffer)) > 0) { zos.write(buffer, 0, len); } zos.closeEntry(); } catch (IOException ex) { ex.printStackTrace(); } finally { if (fis != null) { fis.close(); } if (zos != null) { zos.close(); } if (fos != null) { fos.close(); } } addGzipFileToStream(tempZipFile, os, header);}private void addGzipFileToStream(File zipFile, OutputStream os, String header) throws FileNotFoundException { byte[] buffer = new byte[1024]; DataOutputStream dos = null; GZIPOutputStream gzos = null; FileInputStream inputStream = null; try { dos = new DataOutputStream(os); dos.writeBytes(header); gzos = new GZIPOutputStream(os); inputStream = new FileInputStream(zipFile); int len; while ((len = inputStream.read(buffer)) > 0) { gzos.write(buffer, 0, len); } gzos.finish(); } catch (IOException ex) { ex.printStackTrace(); } finally { if (inputStream != null) { inputStream.close(); } if (gzos != null) { gzos.close(); } if (dos != null) { dos.close(); } zipFile.delete(); }}
希望能帮助到你。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)