黑马程序员技术交流社区
标题:
while循环问题
[打印本页]
作者:
谢威
时间:
2013-7-2 20:05
标题:
while循环问题
本帖最后由 谢威 于 2013-7-2 22:58 编辑
public static void main(String[] args) throws IOException
{
FileReader fr = new FileReader("demo.txt");
char[] buf = new char[1024];
int num = 0;
while((num=fr.read(buf))!=-1)
{
System.out.println(new String(buf,0,num));
}
fr.close();
}
复制代码
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