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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© \(^o^)/ 中级黑马   /  2014-5-4 17:01  /  1216 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 \(^o^)/ 于 2014-5-7 08:18 编辑
  1. import java.io.*;
  2. class FileReaderDemo
  3. {
  4. public static void main(String[] args) throws IOException
  5. {
  6. //创建一个文件读取流对象,和指定名称的文件相关联
  7. //要保证该文件是已经存在的,如果不存在,会发生异常FileNotFoundException

  8. FileReader fr=new FileReader("demo.txt");

  9. //调用读取流对象的read方法
  10. //read();一次读取一个字符而且会自动往下读取。

  11. while(true)
  12. {
  13. int ch=fr.read();
  14. if(ch==-1)
  15. break;
  16. System.out.println("ch="+(char)ch);
  17. }

  18. fr.close();
  19. }
  20. }
复制代码
为什么把if(ch==-1)
              break;
              System.out.println("ch="+(char)ch);
改成if(ch!=-1)
              System.out.println("ch="+(char)ch);
后面的额fr.close();却读不到?

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 赞一个!

查看全部评分

4 个回复

倒序浏览
死循环了。
回复 使用道具 举报
while循环结束不了
要改的话下面肯定要加上等于-1的情况
  1. if(ch!=-1)
  2.                                 System.out.println("ch=" + (char) ch)
  3.                         break;//这句话不加,死循环了,就卡这里。
复制代码
就像楼主上面的写法,分支语句

  1. if (ch == -1)
  2.                                 break;//这句话可以把while循环结束掉
  3.                         System.out.println("ch=" + (char) ch)
复制代码




评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报
import java.io.FileReader;
import java.io.IOException;

public class FileReaderDemo {
        public static void main(String[] args) throws IOException {
                FileReader fr = new FileReader("D:\\1.txt");
                while (true) {
                        int ch = fr.read();       
                        /*
                         * 1、此处把ch == -1改成ch != -1需要按照下面的方法进行修改,否则break;语句写在哪里都是不对的。
                         * 2、如果不写break;语句结果将会更糟,因为程序直接变成死循环了fr.close();这个语句永远也执行不到
                         *   在程序编译时就会报错了。
                         */
                        if (ch != -1){
                            System.out.println("ch=" + (char) ch);
                        }else{
                                break;
                        }
                        /*if (ch == -1){
                                break;
                        System.out.println("ch=" + (char) ch);*/                       
                }
                fr.close();
        }
}
回复 使用道具 举报
if(ch==-1)//这个条件就是判断是否读完。
              break;跳出循环
              System.out.println("ch="+(char)ch);
改成if(ch!=-1)
              System.out.println("ch="+(char)ch);//修改后while循环条件永远是true,为无限循环,所以执行不到
后面的fr.close();
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马