java io换行符_Java IO:为什么从stdin读取时,换行符的数字表示出现在控制台上?...

只是为了更好地理解我在讲座中听到的内容(关于Java输入和输出流),我自己做了这个小程序:

public static void main (String[] args) throws Exception {

int input;

FileOutputStream fos = new FileOutputStream("test.txt");

// 95 is the underscore-char ( _ ). I use it

// for to finish it reception of input.

while ((input = System.in.read()) != 95) {

fos.write(input);

out.println(input);

}

out.println("- Finished -");

fos.close();

}

它打印我刚刚输入到stdout的字符的数字表示.

它基本上有效,但这是我在Eclipse中看到的:

2af9b684d2f92148c2b3186069a10e14.png

“10”是换行符的十进制ASCII表示.

好的.我按下了回车键来完成迭代.

但为什么第二个值也出现了呢?

我希望只出现第一个键(实际字符).

如果以某种方式可以解释这个问题,那么我会很感激他/她的回答.

@Sanket Makani

这是文本文件“text.txt”的相应内容:

2

3

A

a

在Eclipse中:

1d80a88ac206df008d0454f0eca234e2.png

解决方法:

InputStreams可用于二进制格式,二进制格式不关心过滤新行字符.

您需要自己过滤它们,或者使用缓冲读取器/扫描仪和读取线,然后沿着字符串中的字符进行迭代.

显示它确实一次只读取一个字符,但是在按Enter键之前,eclipse终端可能不会转发输入的数据.

当发生这种情况时,你的循环运行两次.

标签:java,eclipse

来源: https://codeday.me/bug/20190611/1217424.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值