从现有的OutputStream创建Java-Zip-Archive

tra*_*ory 6 java apache-commons

如果我不想将生成的存档写入磁盘但是将其发送到其他地方,是否可以在Java中创建Zip-Archive?

想法是,当您想通过HTTP(例如,从Database-Blob或任何其他数据存储)向用户发送Zip-Archive时,在磁盘上创建文件可能是浪费.

我想创建一个

java.util.zip.ZipOutputStream 
Run Code Online (Sandbox Code Playgroud)

或者a

apache.commons.ZipArchiveOutputStream
Run Code Online (Sandbox Code Playgroud)

Feeder将是来自我的Subversion存储库的ByteArrayOutputStream

Adr*_*ith 8

是的,这绝对是可能的!

使用创建ZIP条目putNextEntry方法上ZipOutputStream,然后把字节到在zip文件调用writeZipOutputStream.对于该方法的参数byte[],只需ByteArrayOutputStream从其toByteArray方法中提取它们.

并且ZipOutputStream可以在任何地方发送,因为它的构造函数只需要一个OutputStream例如你的HTTP响应.


Eug*_*hov 5

类似的东西会起作用:

ZipOutputStream zs = new ZipOutputStream(outputStream) ;
ZipEntry e = new ZipEntry(fileName);
zs.putNextEntry(e);
zs.write(...);
zs.close();
Run Code Online (Sandbox Code Playgroud)