[英]skip method always returns 0 of Inputstream
我必須通過讀取文件來生成校驗和,為此,首先,我必須讀取8個字節的標頭,然后跳過一些字節(長度可變,每個文件都可用)。 但是在讀取了前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);
但是,如果我不閱讀標題,則跳過工作正常,它將嘗試跳過提供的字節。 因此,請幫助我解決此問題或指出我做錯了什么。
但是在讀取前8個字節后
while(din.read(headerArr,0,8) != -1){
}
您沒有讀取前8個字節。 您正在讀取最后8個字節,或者更確切地說是在讀取了未知數量的先前字節之后的最后一個字節。
將while
更改為if
,並且不要忽略read()
方法返回的計數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.