首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >相当于java中的ungetc

相当于java中的ungetc
EN

Stack Overflow用户
提问于 2010-02-05 13:54:28
回答 3查看 1.8K关注 0票数 6

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

对于那些不知道C/C++的人:char myc = (char)System.in.read();和我检查了myc的值,现在我想把myc放回System.in中!所以,当我调用System.in时,我又得到了这个值。(但我该如何做到这一点呢?)

注意:我正在寻找精确的技术。请不要建议我捕获它或将其记录在其他地方,然后从那里读取,因为我知道如何处理这些东西。我感兴趣的是Java中的ungetc(),如果有的话。

干杯。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-02-05 14:56:33

您正在寻找PushbackInputStream

Java的IO库是这样设计的,所以原语是真正基本的,并且通过组合添加了额外的功能。例如,如果希望缓冲来自文件的输入,则可以调用new BufferedInputStream(new FileInputStream("myfile.txt"));;如果希望使用UTF8编码从流中读取文本,则可以调用new InputStreamReader(new FileInputStream("myfile.txt"), "UTF-8");

因此,您要做的是使用new PushbackInputStream(System.in);创建一个PushbackInputStream

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

票数 5
EN

Stack Overflow用户

发布于 2010-02-05 14:00:44

如果输入流支持标记,那么您可以使用mark()reset()方法来实现您想要的效果。

您可以将System.in包装到BufferedInputStreamBufferedReader中以获得标记支持。

票数 3
EN

Stack Overflow用户

发布于 2010-02-05 14:00:39

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2205308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档