[英]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.