我想要做的是记录我使用的输入流的输出
org.apache.http.HttpEntity entity = response.getEntity();
org.apache.http.HttpResponse content =entity.getContent();
//Print the result to the screen for debugging
//puroposes
if(Logging.DEBUG) {
InputStream content =entity.getContent();
int i;
StringBuilder b = new StringBuilder();
while( (i=content.read()) != -1 ) {
b.append((char)i);
}
Log.d(TAG, b.toString());
}
现在,在完成日志记录之后,我想通过XML解析器使用完全相同的流。问题是它告诉我蒸汽已经被使用了。
我尝试在调试之前和之后使用mark()
和reset()
调用,但它不起作用。
答案 0 :(得分:2)
这取决于返回的输入流是否支持它。 InputStream
类中的默认实现不执行任何操作,described in the API。因此,您无法确定返回的Stream是否实际支持它。为了确保这一点,你应该将它包装在BufferedInputStream中,它支持这些方法。
答案 1 :(得分:0)
通常mark()
和reset()
不适用于任意的InputStream。它们仅适用于FileInputStream
之类的子类,其中底层数据源支持这些操作。
对于像SocketInputStream或控制台InputStream这样的东西,你唯一的选择是在某处读取和缓冲整个流内容;例如在内存中或通过将其写入临时文件。