Given an InputStream generated for me, i wanted to zip it up and email it. From the java almanac i saw that i could easily do this if i write the stream to disk first. But this seemed like an unnecesary step for me. All i needed to do was to attach this outputstream to my email code and get it done. So, after a bit of playing, I got it working. Here is the code:
1: private byte[] createZipFile(InputStream in, String fileName) throws IOException { 2: ByteArrayOutputStream zipOutputStream = new ByteArrayOutputStream(); 3: ZipOutputStream zippedFile = new ZipOutputStream(zipOutputStream); 4: byte[] buf = new byte[1024]; 5: zippedFile.putNextEntry(new ZipEntry(myFileName)); 6: // Transfer bytes from the file to the ZIP file 7: int len; 8: BufferedInputStream bs = new BufferedInputStream(bds[0].getInputStream());9: while ((len = bs.read(buf)) > 0) {
10: zippedFile.write(buf, 0, len); 11: } 12: zippedFile.closeEntry(); 13: bs.close(); 14: zippedFile.close(); 15: return zipOutputStream.toByteArray(); 16: } By wrapping the ZipOutputStream around a ByteArrayOutputStream, i am able to access the byte array and use that to attach to my email and send out.
No comments:
Post a Comment