在流为空之后,如何在PushBack BufferedInputStream中使用unread()?

时间:2010-02-17 23:34:59

标签: java bufferedstream

用Java创建一个词法分析器,我正在使用PushbackInputStream,因为我需要能够将我读过的内容推回去,以防它不是我想要的。但是只要流为空并且read()返回-1。它不允许我使用unread()。

编辑:我正在使用常规的InputStream,一次读取所有内容,将其放入堆栈,并使用堆栈作为流,因此我可以在其上弹出()和push()项目。

3 个答案:

答案 0 :(得分:1)

我认为你的问题是你正在使用一个狡猾的第三方推送流。

您可能应该使用具有更清晰指定API的java.io.PushbackInputStreamjava.io.PushbackReader,并且不要执行“刷新”缓冲区等特殊操作。

答案 1 :(得分:0)

如果你可以通过单一令牌前瞻和后推,那么古怪的StreamTokenizer类就足够了。它用于递归下降解析器的简单implementation

答案 2 :(得分:0)

  

但是只要流是空的   read()返回-1。它不允许我   使用unread()。

请详细说明'不允许我使用未读()'。通过快速查看源代码,它应该可以正常工作。

也很想知道你为什么要退回EOF。

相关问题