gpt4 book ai didi

java - 输入流的skip方法总是返回0

转载 作者:行者123 更新时间:2023-12-01 11:56:45 24 4
gpt4 key购买 nike

我必须通过读取文件来生成校验和,为此,首先,我必须读取 8 字节 header ,然后跳过一些字节(这将是可变长度,并且可用于每个文件)。但是在读取前 8 个字节并存储到字节数组后,如果我在同一个输入流上运行skip,它总是返回 0。我无法找出可能的原因。请在下面找到代码部分:

    MessageDigest md = MessageDigest.getInstance("SHA1");
DigestInputStream din = new DigestInputStream(inputstream, md);
while(din.read(headerArr,0,8) != -1){
}
byte[]headerData = md.digest();
//skip some bytes
long skippedBytes = inputstream.skip(bytesTobeskipped);

但是,如果我不读取标题,则跳过工作正常,它会尝试跳过提供的字节。因此,请帮助我解决这个问题或指出我做错了什么。

最佳答案

But after reading first 8 bytes

while(din.read(headerArr,0,8) != -1){
}

您没有读取前 8 个字节。您正在读取最后 8 个字节,或者更确切地说是读取一些未知数量的先前字节后的最后一个字节。

while 更改为 if,并且不要忽略 read() 方法返回的计数。

关于java - 输入流的skip方法总是返回0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28392825/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com