我正在编写一个程序,它接受一个阅读器并解析来自该阅读器的输入。我不能使用 BufferedReader,但我想实现一个查看阅读器中当前字符的 peek 方法,而无需实际调用该字符的 read()。有没有比将其转换为字符数组或字符串并查看字符更简单/更好的方法?我很想使用 mark() 方法,但不幸的是,这只适用于缓冲阅读器。
问问题
1236 次
2 回答
1
自然的解决方案是使用PushBackReader
提供unread
可用于实现的方法peek
。(你可以计算出细节!)
但是否允许这样做并不完全清楚。这取决于您是被禁止使用BufferedReader
还是“缓冲Reader
”。在后一种情况下,PushBackReader
可以说是缓冲的Reader
.
如果您必须在不使用现有缓冲Reader
类的情况下实现这一点,那么您应该如何处理这取决于需要多少前瞻:
如果您只需要一个字符前瞻(例如,只是
peek
),那么您可以使用int
表示前瞻和表示boolean
当前是否有效的 a 来实现这一点。如果您需要多个字符前瞻,则需要一个数组(或列表),依此类推。
作为记录,mark()
andreset()
方法实际上在Reader
API 中。问题在于,并非所有Reader
类都能够实现这些方法……由于底层流的限制……在操作系统级别。
于 2013-09-20T04:51:31.083 回答
0
您可以使用基于 java.io.PushBackReader 的 peek 方法编写自己的类。
于 2013-09-20T03:42:39.773 回答