2010-02-05 85 views
5

我正在用java写一个程序(在C中也已经写了一个版本)。我真的需要在阅读后将字符放回输入流。这可以通过C/C++中的ungetc()完成,我很奇怪我怎么能在Java中做同样的事情?相当于ungetc在java中

对于那些你不知道的C/C++: char myc = (char)System.in.read(); 和我检查MYC的价值,现在我想放回MYC到System.in!所以当我打电话给System.in时,我会得到这个价值。 (但我该怎么做?)

注:我正在寻找确切的技术。请不要建议我赶上它或将它记录到其他地方并从那里读取,因为我知道如何处理这些东西。如果有什么我感兴趣的是相当于Java中的ungetc()

干杯。

回答

4

您正在寻找PushbackInputStream

Java的IO库的设计,因此原语是非常基本的和额外的功能是通过组合物一起加入。例如,如果你想从一个文件缓冲输入,你会打电话new BufferedInputStream(new FileInputStream("myfile.txt"));或者,如果你想使用UTF-8编码从流为文本阅读,你会打电话new InputStreamReader(new FileInputStream("myfile.txt"), "UTF-8");

你想要做的是创造那么什么一个PushbackInputStream与new PushbackInputStream(System.in);

这里的警告是你实际上没有把字节推回到标准输入。一旦你从System.in中读取它就消失了,没有其他代码访问System.in将能够获得该字节。您推回的任何内容都只能从您为处理数据而创建的特定PushbackInputStream中获得。

0

A RandomAccessFile can .seek(.getFilePointer() - 1)

+0

“java myapp Pooria 2010-02-05 06:03:44