3 回答

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個(gè)贊
您可以使用org.apache.commons.io.IOUtils.copy將InputStream的內(nèi)容復(fù)制到字節(jié)數(shù)組,然后使用ByteArrayInputStream從字節(jié)數(shù)組重復(fù)讀取。例如:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
org.apache.commons.io.IOUtils.copy(in, baos);
byte[] bytes = baos.toByteArray();
// either
while (needToReadAgain) {
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
yourReadMethodHere(bais);
}
// or
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
while (needToReadAgain) {
bais.reset();
yourReadMethodHere(bais);
}

TA貢獻(xiàn)2019條經(jīng)驗(yàn) 獲得超9個(gè)贊
根據(jù)InputStream的來源,您可能無法重置它。您可以使用檢查mark()和reset()支持markSupported()。
如果是這樣,則可以調(diào)用reset()InputStream返回到開頭。如果不是,則需要再次從源讀取InputStream。
添加回答
舉報(bào)