@@ -0,0 +1,1069 @@
+package com.rnziparchive;%0A%0A%0Aimport java.io.IOException;%0Aimport java.io.InputStream;%0Aimport java.io.OutputStream;%0A%0Aimport static com.facebook.common.internal.Preconditions.checkNotNull;%0A%0Apublic class StreamUtil %7B%0A    private static final int BUF_SIZE = 0x1000; // 4K%0A%0A    public interface ProgressCallback %7B%0A        // not the total - the actual number read since last time%0A        void onCopyProgress(long bytesRead);%0A    %7D%0A%0A    // https://stackoverflow.com/questions/4919690/how-to-read-one-stream-into-another%0A    public static long copy(InputStream from, OutputStream to, ProgressCallback callback)%0A            throws IOException %7B%0A        checkNotNull(from);%0A        checkNotNull(to);%0A        byte%5B%5D buf = new byte%5BBUF_SIZE%5D;%0A        long total = 0;%0A        while (true) %7B%0A            int r = from.read(buf);%0A            if (r == -1) %7B%0A                break;%0A            %7D%0A            to.write(buf, 0, r);%0A            total += r;%0A%0A            if (callback != null) %7B%0A                callback.onCopyProgress(r);%0A            %7D%0A        %7D%0A        return total;%0A    %7D%0A%7D%0A

Add util function for copying streams more efficiently, with a progress callback