簡體   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