黑马程序员技术交流社区

标题: io流读取问题 [打印本页]

作者: \(^o^)/    时间: 2014-5-4 17:01
标题: io流读取问题
本帖最后由 \(^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();却读不到?


作者: skill20    时间: 2014-5-4 17:11
死循环了。
作者: NewDemo    时间: 2014-5-4 18:12
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)
复制代码





作者: 爱翚    时间: 2014-5-4 18:59
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();
        }
}
作者: 邵景伦    时间: 2014-5-5 15:31
if(ch==-1)//这个条件就是判断是否读完。
              break;跳出循环
              System.out.println("ch="+(char)ch);
改成if(ch!=-1)
              System.out.println("ch="+(char)ch);//修改后while循环条件永远是true,为无限循环,所以执行不到
后面的fr.close();




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