如何获取输入流的crc并返回克隆

时间:2013-02-26 15:20:20

标签: java inputstream

我有一个输入流。首先,我需要知道这是我知道如何做的,例如:

 CRCUtils.getCRC32(IOUtils.toByteArray(is))

我在crcUtils中有方法可以从字节数组中计算它。但后来我再次需要这个输入流,我不能使用前一个输入流,因为它达到了目的。那么有没有选择如何获得crc和克隆?

4 个答案:

答案 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();