读取InputStream

时间:2011-03-11 11:24:35

标签: java inputstream

我使用Inputstream从网络获取一些数据。我想创建一个日志来检查InputStream是否有内容。 Log("InputStream = "+ is.read())我得InputStream = 123 但是后来当我使用它时,我得到InputStream = -1。我想是与迭代器的位置相关的东西,但我没有在API of Java中看到你必须使用reset()(当你使用mark()时)再次阅读inputStream。

4 个答案:

答案 0 :(得分:2)

正确 - 一个读给客户。使用流或迭代器后,如果不重置它,则无法再次使用它。

答案 1 :(得分:1)

InputStream不允许“偷看”下一个角色;相反,所有读取方法都会阻塞,直到数据可用。

如果您需要偷看,请使用Java NIOSelector可以告诉您是否有任何频道准备好数据。

答案 2 :(得分:0)

您可以将流包裹在PushbackInputStream中。然后你可以这样做:

int r = in.read();
Log("InputStream = "+ r);
in.unread(r);

以下阅读将重新阅读该字符

答案 3 :(得分:0)

example使用mark()reset()重新读取输入流,但它依赖于先验对合适readlimit的了解}。根据您的需要,它可能是一个可用的缓冲策略。