1KB程度以上のファイルをZipInputStream#readで読み込むと途中で切れてしまった。 原因はZipInputStream#readはファイルの最後までデータを読み込むことを保証していないため。 BufferedInputStreamを使うと最後まで読み込める。
コード例は以下。
ZipInputStream zis = new ZipInputStream(is);
ZipEntry zipEntry = zis.getNextEntry();
String entryName = zipEntry.getName();
byte[] content = new byte[(int) zipEntry.getSize()];
BufferedInputStream bis = new BufferedInputStream(zis);
bis.read(content, 0, content.length);
参考: