繁体   English   中英

Java zipfile /字节数组问题

[英]Java zipfile/byte array issue

我有一个包含3个相对较大(几个mb)的二进制文件的zip文件,我需要将其读入缓冲区以执行某些正则表达式操作。

//For entry in zip.getentries loop above

long size = entry.getSize();

byte[] bytes = new byte[(int) size];

int numBytesRead = zipFile.getInputStream(entry).read(bytes);

if (numBytesRead != size) {
     Logger.getLogger(this.getClass()).debug(
                "Read " + numBytesRead + " bytes from zip entry but size of the  
                zip entry is " + size + " bytes");
//continue; - If I do not comment this out the size check fails and nothing happens
}

FileUtils.writeByteArrayToFile(extractFile, bytes);

出于某种原因,我只将大约1/15的数据输入字节数组(在一个示例中为642个记录中的43个)。 我最初认为这可能是一个问题,可能是将尺寸转换为int,但尺寸通常介于1,000,000 - 10,000,000左右,所以这不是问题。 有什么想法吗?

不需要InputStream.read来读取所有数据。 它将读取一些数据,其数量在1和数组大小之间变化。

您必须重复调用该函数,直到您读取所需的所有数据。

作为参考,请查看API文档 :他们明确说“可以读取较小的数字”。

我最终使用IOUtils来解决问题。 感谢指针Flavio,Duncan

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM