1.inputStream.markSuppored() == true;
可以使用mark()和reset()来实现二次读取
2.当inputStream不支持mark和reset时,
从StackoverFlow找到答案
You can use to copy the contents of the InputStream to a byte array, and then repeatedly read from the byte array using a ByteArrayInputStream. E.g.:
ByteArrayOutputStream baos = new ByteArrayOutputStream();org.apache.commons.io.IOUtils.copy(in, baos);byte[] bytes = baos.toByteArray();// eitherwhile (needToReadAgain) { ByteArrayInputStream bais = new ByteArrayInputStream(bytes); yourReadMethodHere(bais);}// orByteArrayInputStream bais = new ByteArrayInputStream(bytes);while (needToReadAgain) { bais.reset(); yourReadMethodHere(bais);}