4-3问题字符输入流

4-3问题字符输入流

问题1:

while((n=isr.read(cbuf))!=-1)

这样定义的就是把isr文件的信息读取到cbuf这个数组中,然后用n来接收,如果返回值不为-1,就是说明了还没读取到文件信息的末尾,故继续执行循环;理解的对吗?

问题2:

你好,慕课网

你好,慕课网

你好,慕课网

你好,慕课网


你好,慕课网

你好,慕课网

你好,慕课网

你好,慕课网

你好,慕课网

你好,慕课网

课网

你好,慕课网

这种读取的情况, 是因为字符数组每次读取的最长为10吗? 因为读取到10了,已经读满了,所以后面的信息出现了错误,也就是说明了,定义的字符数组 char[] cbuf=new char[10];不能满足读取文件的内容,因此需要进行循环读取,从而输出实际的读取信息, 也就是String s=new String(cbuf,0,n);这个n是用来接收读取数据的实际信息的;我理解的对吗?

问题3:

老师在视频中讲,字符数组是10;在读取的时候最后一次的时候,不能保证字符数组是满的,要读取的信息是长度是12吗?每行为1字符长度?字符长度是10,已经存放满了啊,这里没听懂、。

正在回答 回答被采纳积分+1

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

1回答
好帮手慕小班 2021-01-28 16:29:14

同学你好,1、问题一,同学的理解有一点偏差,这里的read方法,是将字符读入数组中,而返回值是读取到的字符数量

http://img1.sycdn.imooc.com//climg/601271e709349a3305900252.jpg

如果返回值不为-1,就是说明了还没读取到文件信息的末尾,故继续执行循环;这句话同学理解是正确的。

    ​2、问题二

    ​    ​1)、是的,字符数组每次读取的最长为10。

    ​    ​2)、根据上面的解释,同学的理解有误,对于同学的描述"String s=new String(cbuf,0,n);这个n是用来接收读取数据的实际信息的",这里n是具体读取到的字符数量

http://img1.sycdn.imooc.com//climg/6012747f0925802106020180.jpg

    ​3、问题三

    ​    ​字符数组是10;在读取的时候最后一次的时候,不能保证字符数组是满的,同学可以这样理解,在读取一个12个字符的内容时,会分两遍来读取,第一遍先读取10个字符,第二遍读取剩下的两个字符,此时就会出现没有读满数组的情况,所以会说不能保证读取的字符数组是满的。

祝学习愉快!

  • 提问者 rock221 #1

    问题3,就是说,剩最后12个字符的时候,因为有余2,所以不满,也就单独抛出了,对吗?

    2021-01-28 16:40:56
  • 好帮手慕小班 回复 提问者 rock221 #2

    同学你好,当剩余12个字符时,因为有余2,所以会分为两次读取,而同学描述的单独抛出是什么意思呐?

    祝学习愉快!

    2021-01-28 17:09:38
  • 提问者 rock221 回复 好帮手慕小班 #3
    就是那2个字符单独抛出啊,所以出错了
    2021-01-28 17:13:38
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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