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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 谢威 中级黑马   /  2013-7-2 20:05  /  1418 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 谢威 于 2013-7-2 22:58 编辑
  1. public static void main(String[] args) throws IOException
  2.         {
  3.                 FileReader fr = new FileReader("demo.txt");
  4.                 char[] buf = new char[1024];

  5.                 int num = 0;
  6.                 while((num=fr.read(buf))!=-1)
  7.                 {
  8.                         System.out.println(new String(buf,0,num));
  9.                 }
  10.                

  11.                 fr.close();
  12.         }
复制代码
while中当判断条件(num=fr.read(buf))=-1时就退出了循环,buf里面读取的数据怎么会被写出来的呢?

评分

参与人数 1技术分 +1 收起 理由
赵海洋 + 1 鼓励一下

查看全部评分

5 个回复

正序浏览
我觉得楼主问的是read()方法的底层是怎么实现读写的 ,而不是一次读什么,你可以传一个字符,可以一个字符数组,可关键是人家底层是怎么走的 谁都知道它没读到的时候返回-1,。可这是楼主想要的答案吗
回复 使用道具 举报
((num=fr.read(buf))!=-1可以拆分完为样
fr.read(buf)
while(num!-=1)
先把字符读到你定义好的一个数组里面,如果你从文件里面读取的数据!=-1也就是还有数据的时候,就执行WHILE循环里面的内容,把char数组里面的内容打印出来。。如果num=fr.read(buf);num==-1说明你没有读出数据读出。不执行循环里面的内容
回复 使用道具 举报
如果问题已经得到满意回答,请楼主把帖子改为已解决,多谢配合~~~
回复 使用道具 举报
不是那个意思。 read()方法是每次读取流中的一个字节,如果需要读取流中的所有数据,就是用循环读取,while((num=fr.read(buf))!=-1),当到达流的末尾时,read方法返回值是 -1.也就是所有的数据都被读出来了。

评分

参与人数 1技术分 +1 收起 理由
赵海洋 + 1 鼓励一下

查看全部评分

回复 使用道具 举报
read()方法是API提供的方法,如果你想查看它的实现细节,可以去看源代码。很容易都能找到。不过都是英文的,英语够好的话可以去看看,还是很有必要的。希望能帮到你
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马