📅  最后修改于: 2023-12-03 15:16:02.519000             🧑  作者: Mango
Java.io.PushbackReader是一个Java中的类,用于将字符读取器装饰为可推回字符的字符读取器。
PushbackReader(Reader in)
:将给定的Reader包装成一个PushbackReader,并使用默认推回缓冲区大小(1)进行初始化。PushbackReader(Reader in, int size)
:将给定的Reader包装成一个PushbackReader,并用指定的缓冲区大小进行初始化。PushbackReader类有两个主要的方法:mark(int readAheadLimit)
和reset()
。mark(int readAheadLimit)
方法标记当前的读写位置,并读取指定数量的字符放入推回缓冲区中。之后可以使用reset()
方法将读写位置重置回标记处,并重新读取推回缓冲区中的字符。
try {
FileInputStream fileInputStream = new FileInputStream("filename.txt");
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);
PushbackReader pushbackReader = new PushbackReader(inputStreamReader);
int c;
while ((c = pushbackReader.read()) != -1) {
if (c == '/') {
if ((c = pushbackReader.read()) == '/') {
while ((c = pushbackReader.read()) != '\n') ;
} else if (c == '*') {
while (true) {
if ((c = pushbackReader.read()) == '*') {
if ((c = pushbackReader.read()) == '/') break;
else pushbackReader.unread(c);
}
}
} else pushbackReader.unread(c);
} else {
System.out.print((char)c);
}
}
pushbackReader.close();
} catch (IOException e) {
e.printStackTrace();
}
上面的代码示例是一个Java程序,该程序可以从文件中读取文本内容,并将其中的注释删去。在读取每个字符时,如果当前字符是/
,则读取下一个字符。如果下一个字符也是/
,则读取到下一行的末尾。如果下一个字符是*
,则读取到*/
结束为止。否则,将读取到的下一个字符“推回”到推回缓冲区中。