A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 1021361407 中级黑马   /  2015-3-17 00:33  /  1082 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 1021361407 于 2015-3-17 00:35 编辑

刚刚看毕老师的视频,讲io流,在文本文件读取的代码中有这么一句

  1. <P>char []buf=new char[3];</P>
  2. <P>while((num=fr.read(buf))!=-1)</P>
  3. <P>{</P>
  4. <P>}</P>
复制代码

这句(num=fr.read(buf))!=-1怎么理解呢?
总是绕不过这个逻辑来,fr.read(buf)对num赋值,然后和-1比较对吧,关键是这个赋值操作,fr.read(buf)返回的是读取的字符数,达到流的末尾则返回-1,那么问题来了,在对文件末尾读取的时候,如果读到最后一个字符的时候fr.read(buf)返回一个int对num赋值然后执行循环体,然后又重新fr.read(buf)返回一个-1,结束循环
这样理解对么?

4 个回复

倒序浏览
这个我也没有看懂,哪个高手给我们解答一下!
回复 使用道具 举报
看不懂,来个大神读一下
回复 使用道具 举报
我也没看懂!!!
回复 使用道具 举报
  1. int num=null;
  2. while((num=fr.read(buf))!=-1){

  3. }
复制代码

这个设计的有点复杂。
fr是字符读取。num是int型,可以说是字节。
字符读取后赋值给num,num在存入buf容器
而-1则是文件的结束标记。当读到-1的时候循环不满足,也就不会继续执行了。

我不知道我这么理解对不对。欢迎大家补充。没研究过这个。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马