关于java.io超级新手简单问题

Lsing 2012-06-15 10:55:35
import java.io.*;
public class TestFinally {
public static void main(String args[]){
FileInputStream in=null;
try{
in =new FileInputStream("myfile.txt");
int b;
b=in.read();
while(b!=-1){
System.out.print((char)b);
b=in.read();
}
}
catch(FileNotFoundException e){
e.printStackTrace();
}
catch(IOException e){
System.out.println(e.getMessage());
}
这段代码的红色部分为什么不能少,一少运行,CPU就占用99%??求高手详解....
...全文
93 8 打赏 收藏 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
十四月的清晨 2012-06-15
  • 打赏
  • 举报
回复
楼主需要先明白.read()方法就好了。
//读取下一个字节,直到流结束则返回 -1
所以,加入你的Mytest是:12345
如果去掉in.read()
那么只是在无限循环判断1,所以永远都是无限输出1
而加上的话,
第二次的b=2了,然后3,4,5,到5后面就返回-1了,循环停止。
a363722188 2012-06-15
  • 打赏
  • 举报
回复
读的时候要放到循环体中读!!!然后自然就有判断啦 b=in.read();这条语句放while循环里 当文件读完后 b=-1; 这时候就跳出循环了啊!!
sffx123 2012-06-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
那加上这句,不是重新定义了b吗?不会继续循环??

引用 2 楼 的回复:

没有红色那句话,就剩:
while(b!=-1) {
System.out.print((char)b);
}

你不觉得这是个死循环么?CPU持续忙碌,当然负载很高。
[/Quote]b=in.read();表示一次读取一个字符人,read方法如果返回-1表示读取到文件的末尾了,加上这句就是读取一个文件的全部内容并打印出来,但是去掉了死循环了,cpu占用率肯定高。
MiceRice 2012-06-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
那加上这句,不是重新定义了b吗?不会继续循环??引用 2 楼 的回复:
[/Quote]

你没有看过read()函数的API说明吧?

while(b!=-1){
System.out.print((char)b);
b=in.read(); // 读取下一个字节,直到流结束则返回 -1
}
Lsing 2012-06-15
  • 打赏
  • 举报
回复
那加上这句,不是重新定义了b吗?不会继续循环??[Quote=引用 2 楼 的回复:]

没有红色那句话,就剩:
while(b!=-1) {
System.out.print((char)b);
}

你不觉得这是个死循环么?CPU持续忙碌,当然负载很高。
[/Quote]
我爱淼儿 2012-06-15
  • 打赏
  • 举报
回复
对,少了 b=in.read() 就成了死循环了。
while判断的条件 b != -1 一直为true
while(true){
}
跳不出来了。
MiceRice 2012-06-15
  • 打赏
  • 举报
回复
没有红色那句话,就剩:
while(b!=-1) {
System.out.print((char)b);
}

你不觉得这是个死循环么?CPU持续忙碌,当然负载很高。
wula0010 2012-06-15
  • 打赏
  • 举报
回复
红色代码b=in.read();表示从文件中读取数据,如果你不要这个,系统就在一直执行System.out.print((char)b);0.001毫秒都不歇,不停的输出,你说你的cpu占用能不高么?!

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧