我想解压缩上传到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`
}