使用InputStream进行日志记录,然后使用XML解析

时间:2010-07-11 04:50:03

标签: java

我想要做的是记录我使用的输入流的输出

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()调用,但它不起作用。

2 个答案:

答案 0 :(得分:2)

这取决于返回的输入流是否支持它。 InputStream类中的默认实现不执行任何操作,described in the API。因此,您无法确定返回的Stream是否实际支持它。为了确保这一点,你应该将它包装在BufferedInputStream中,它支持这些方法。

答案 1 :(得分:0)

通常mark()reset()不适用于任意的InputStream。它们仅适用于FileInputStream之类的子类,其中底层数据源支持这些操作。

对于像SocketInputStream或控制台InputStream这样的东西,你唯一的选择是在某处读取和缓冲整个流内容;例如在内存中或通过将其写入临时文件。