黑马程序员技术交流社区

标题: while循环问题 [打印本页]

作者: 谢威    时间: 2013-7-2 20:05
标题: while循环问题
本帖最后由 谢威 于 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里面读取的数据怎么会被写出来的呢?
作者: j816326    时间: 2013-7-2 21:00
read()方法是API提供的方法,如果你想查看它的实现细节,可以去看源代码。很容易都能找到。不过都是英文的,英语够好的话可以去看看,还是很有必要的。希望能帮到你
作者: 黄少海    时间: 2013-7-2 21:15
不是那个意思。 read()方法是每次读取流中的一个字节,如果需要读取流中的所有数据,就是用循环读取,while((num=fr.read(buf))!=-1),当到达流的末尾时,read方法返回值是 -1.也就是所有的数据都被读出来了。
作者: 赵海洋    时间: 2013-7-2 21:20
如果问题已经得到满意回答,请楼主把帖子改为已解决,多谢配合~~~
作者: 梦想蓝色天空    时间: 2013-7-2 21:22
((num=fr.read(buf))!=-1可以拆分完为样
fr.read(buf)
while(num!-=1)
先把字符读到你定义好的一个数组里面,如果你从文件里面读取的数据!=-1也就是还有数据的时候,就执行WHILE循环里面的内容,把char数组里面的内容打印出来。。如果num=fr.read(buf);num==-1说明你没有读出数据读出。不执行循环里面的内容
作者: j816326    时间: 2013-7-2 21:26
我觉得楼主问的是read()方法的底层是怎么实现读写的 ,而不是一次读什么,你可以传一个字符,可以一个字符数组,可关键是人家底层是怎么走的 谁都知道它没读到的时候返回-1,。可这是楼主想要的答案吗




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2