我有一个输入流。首先,我需要知道这是我知道如何做的,例如:
CRCUtils.getCRC32(IOUtils.toByteArray(is))
我在crcUtils中有方法可以从字节数组中计算它。但后来我再次需要这个输入流,我不能使用前一个输入流,因为它达到了目的。那么有没有选择如何获得crc和克隆?
答案 0 :(得分:0)
你可以这样做:
byte[] byteArr = IOUtils.toByteArray(is);
CRCUtils.getCRC32(byteArr);
InputStream is1 = new ByteArrayInputStream(byteArr);
答案 1 :(得分:0)
如果支持,您可以在输入流中使用marks。
答案 2 :(得分:0)
如果在处理文件之前不需要CRC值,您还可以创建FilteredInputStream
的子类,将其读取的所有内容传递给CRC32,并使用一些获取CRC值的方法。
答案 3 :(得分:0)
使用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();