Have a look at Google's GUAVA library. It allow to easily copy Input to Output Streams. Also check Apache Commons Compress with special ZIP support.
However you might be able to make your life much easier...
The HTTPResponse has an OutputStream object. Instead of shuffling byte arrays through functions, you should obtain that OutputStream and hand it as a parameter to your ZIP creation function. This way you avoid requiring all the memory for the byte shuffling and the potential issues it brings with it.
Hope that helps!