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
是的,这绝对是可能的!
使用创建ZIP条目putNextEntry方法上ZipOutputStream,然后把字节到在zip文件调用write的ZipOutputStream.对于该方法的参数byte[],只需ByteArrayOutputStream从其toByteArray方法中提取它们.
并且ZipOutputStream可以在任何地方发送,因为它的构造函数只需要一个OutputStream例如你的HTTP响应.
类似的东西会起作用:
ZipOutputStream zs = new ZipOutputStream(outputStream) ;
ZipEntry e = new ZipEntry(fileName);
zs.putNextEntry(e);
zs.write(...);
zs.close();
Run Code Online (Sandbox Code Playgroud)