代码之家  ›  专栏  ›  技术社区  ›  Pooria

Java中的UNGECC等价

  •  5
  • Pooria  · 技术社区  · 16 年前

    我用Java编写了一个程序(已经在C中编写了一个版本)。我真的需要在读了一个字符后把它放回输入流。这可以通过 ungetc() 在C/C++中,我不知道如何在Java中做同样的事情?

    对于那些不懂C/C++的人来说: char myc = (char)System.in.read(); 我检查了myc的值,现在我想把myc放回 System.in 你说什么?所以当我打电话的时候 程序输入 ,我得到这个值。(但我该怎么做?)

    注:我正在寻找准确的技术。请不要建议我抓到它,或者把它记录到其他地方,从那里读出来,因为我知道如何处理这些事情。我感兴趣的相当于 UNGET() 如果有Java的话。

    干杯。

    3 回复  |  直到 16 年前
        1
  •  4
  •   Charles Miller    16 年前

    你在找 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中,才能使用任何回推的内容。

        2
  •  3
  •   Chandra Sekar    16 年前

    如果输入流支持标记,则可以使用 mark() 和 reset() 实现你的目标的方法。

    你可以包装 System.in 变成一个 BufferedInputStream 或者 BufferedReader 以获得标记支持。

        3
  •  0
  •   ephemient    16 年前

    一 RandomAccessFile 可以 .seek( .getFilePointer() - 1 ) .