黑马程序员技术交流社区
标题:
输入流和输出流的问题。(已解决)
[打印本页]
作者:
韩新凯
时间:
2012-4-15 13:38
标题:
输入流和输出流的问题。(已解决)
本帖最后由 韩新凯 于 2012-4-18 15:17 编辑
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class FileReaderDemo2 {
public static void main(String[] args) {
FileReader fr = null;
try {
fr = new FileReader("fw.txt");
char[] buf = new char[3];
/*
int num = 0;
while((num=fr.read(buf))!=-1){
System.out.println(new String(buf,0,num));
}*/
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
输出正常结果,
为什么把/**/之间的代码换成
/*int num = fr.read(buf);
while(num!=-1){
System.out.println(new Strng(buf,0,num));
}
*/
输出结果只有前面3个字符,而且还是一个死循环?
作者:
刘占月
时间:
2012-4-15 13:48
你把num = fr.read(buf) 定义在循环外边
肯定就只执行一次。
char[] buf = new char[3];
你又定义每次读三个字节 所以它就只读你输入的前三个字节。
因为num!=-1 永远不能为flase 所以是个死循环
作者:
高铭
时间:
2012-4-15 13:48
你把定义的变量num=fr.read()写在循环的外面
那么循环里的的判断条件num始终不等于-1; 也就是始终符合条件
那就肯定会一直循环下去
作者:
刘占月
时间:
2012-4-15 13:48
你把num = fr.read(buf) 定义在循环外边
肯定就只执行一次。
char[] buf = new char[3];
你又定义每次读三个字节 所以它就只读你输入的前三个字节。
因为num!=-1 永远不能为flase 所以是个死循环
作者:
韩新凯
时间:
2012-4-15 20:19
懂了,谢谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2