关于统计字符的问题

关于统计字符的问题

FileInputStream fis1 = new FileInputStream("speech.txt");
   int n = 0;//接收读取字节
   int count=0;//计数器
   System.out.print("文本类容:");
   while ((n = fis1.read()) != -1) {
     System.out.print((char)n+"  ");
     count++;
   }
   System.out.println();
   System.out.println("统计结果:"+file1.getName()+"中共有"+count+"个字节");
   我在文件中只写入了五个字符abcde,但是最后统计出来的是7个字节,打印输出的也确实只有这五个字符,但是如果我直接打印输出字节的话,会在最后多出来13和10这两个字节编码,查一下好像是空格,请问是不是 System.out.print((char)n+"  ");这条语句里的空格呢?如果是的话应该每次循环里都会输出这样的空格啊,那么字节不就应该是10个了吗?我把这条语句里的空格删除,仍然是输出统计7个字节。求解


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,在文件内容的读取中,换行、回车等都是有对应的标识符,都是可以作为一个字符来输出,所以多出的两个字符应该就是回车换行的标识符。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

好帮手慕小班 2019-05-06 15:08:17

同学你好,输出txt文件内容为空格,与System输出语句中的空格没有关系,

http://img1.sycdn.imooc.com//climg/5ccfdcaa000132af04860098.jpg

可能是txt文件中有空格,例如

无空格

http://img1.sycdn.imooc.com//climg/5ccfdd0900018ec004160174.jpg

http://img1.sycdn.imooc.com//climg/5ccfdcf500014a0f08470373.jpg

有空格:

http://img1.sycdn.imooc.com//climg/5ccfdd540001710a04910317.jpg

http://img1.sycdn.imooc.com//climg/5ccfdd430001294808700394.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!


  • 提问者 必思答 #1
    仔细检查了下,发现是文本文件中按了个回车换行,是不是回车占了一个字节,换行又占了一个字节呢?
    2019-05-06 17:15:21
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师