我可以偷看BufferedReader吗?

The*_* do 18 java peek bufferedreader

有没有办法检查BufferedReader对象中是否有东西要读?像C++这样的东西cin.peek().谢谢.

Gav*_*n H 36

您可以使用PushbackReader.使用它你可以读取一个字符,然后将其读取.这基本上允许你推回它.

PushbackReader pr = new PushbackReader(reader);
char c = (char)pr.read();
// do something to look at c
pr.unread((int)c); //pushes the character back into the buffer
Run Code Online (Sandbox Code Playgroud)

  • 好答案!这就是Java"偷看". (2认同)

pgm*_*ura 14

您可以尝试"boolean ready()"方法.从Java 6 API doc:"如果缓冲区不为空,或者基础字符流已准备好,则缓冲字符流就绪."

BufferedReader r = new BufferedReader(reader);
if(r.ready())
{
   r.read();
}
Run Code Online (Sandbox Code Playgroud)


Kyl*_*ndo 13

以下代码将查看Stream中的第一个字节.应该像你一样偷看.

BufferedReader bReader = new BufferedReader(inputStream);
bReader.mark(1);
int byte1 = bReader.read();
bReader.reset();
Run Code Online (Sandbox Code Playgroud)