簡體   English   中英

如何獲取輸入流的CRC並返回此副本

[英]How to get crc of input stream and return clone of this is

我有一個輸入流。 首先,我需要知道這是我知道該怎么做,例如:

 CRCUtils.getCRC32(IOUtils.toByteArray(is))

我在crcUtils中有方法可以從字節數組中計算出來。 但是然后我再次需要此輸入流,並且由於到達末尾而無法使用前一個輸入流。 那么有沒有選擇如何獲得crc和is的副本呢?

您可以這樣做:

byte[] byteArr = IOUtils.toByteArray(is);
CRCUtils.getCRC32(byteArr);
InputStream is1 = new ByteArrayInputStream(byteArr); 

您可以在輸入流中使用標記 (如果支持)。

如果在處理文件之前不需要CRC值,則還可以創建FilteredInputStream的子類,該子類將讀取的所有內容傳遞給CRC32,並提供一些額外的方法來獲取CRC值。

讀取流時,使用CheckedInputStream計算CRC:

CRC32 crc = new CRC32();
try (InputStream in = new CheckedInputStream(new FileInputStream("myfile"), crc)) {
    // read the input ...
}
// now crc contains the checksum of the input
long crc32 = crc.getValue();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM