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