Is it possible to create a Zip-Archive in Java if I do not want to write the resulting archive to disk but send it somewhere else?
The idea is that it might be a waste to create a file on disk when you want to send the Zip-Archive to a user via HTTP (e.g. from a Database-Blob or any other Data-Store).
I would like to create a
java.util.zip.ZipOutputStream
or a
apache.commons.ZipArchiveOutputStream
where the Feeder would be a ByteArrayOutputStream coming from my Subversion Repository
Something like that would work:
Use Apache Commons Compress:
Read zip from
byte[] bytes
example:Yes this is absolutely possible!
Create your Zip entry using the
putNextEntry
method on theZipOutputStream
then put the bytes into the file in the zip by callingwrite
on theZipOutputStream
. For the parameter for that method, thebyte[]
, just extract them from theByteArrayOutputStream
with itstoByteArray
method.And the
ZipOutputStream
can be sent anywhere, as its constructor just takes anOutputStream
so could be e.g. your HTTP response.Input: D:/in.xml
Output: D:/final.zip (having 2 files 001zip.txt,002zip.txt)
Code: