解压缩Google App Engine Java的内存

提问

我想解压缩上传到servlet的文件,并将所有解压缩的文件作为byte []存储到DataStore.由于GAE中没有文件系统,因此我必须将所有内容都放在内存中.假设我有byte [] allzipdata来存储原始的zip文件数据.如何解压缩文件,尤其是如何从内存中的每个zipentry获取输入流?

ZipInputStream zis = new ZipInputStream(new ByteArrayInputStream(allzipdata));
ZipEntry ze = zis.getNextEntry();
while(ze!=null){
}

那么while循环中有什么?

另外,如果我上传文件,则使用item.getContentType()知道contentType.其中哪个项目是FileItemStream.因此,对于拉链,是否有办法知道contentType?

最佳答案

要从ZipInputStream读取图像数据,我建议使用Apache Commons-IO库.它将输入流的ZIP条目转换为字节数组:

    ZipInputStream zis = new ZipInputStream(new ByteArrayInputStream(allzipdata));
    ZipEntry ze = null;
    while ((ze = zis.getNextEntry()) != null) {
       // write your code to use zip entry e.g. below:
       String filename = ze.getName();
       System.out.println("File Name of Entry file="+fileName);
       byte[] data = IOUtils.toByteArray(zis);
       // now work with the image `data`
    }
评论