黑马程序员技术交流社区

标题: 一个文本文件竟然这么多-1 [打印本页]

作者: 黑马晓志    时间: 2014-3-18 10:20
标题: 一个文本文件竟然这么多-1
随便找个文本文件试试下面代码,很简单
  1. package com.xiaozhi.test;

  2. import java.io.FileReader;
  3. import java.io.PrintStream;

  4. public class Test {

  5.         public static void main(String[] args) throws Exception {
  6.                 FileReader fileReader=new FileReader("c:\\1.txt");
  7.                 while(true)
  8.                 {
  9.                         System.out.println(fileReader.read());
  10.                 }
  11.         }
  12. }
复制代码

作者: 张贺    时间: 2014-3-18 10:24
无限循环当然可以有那么多的-1.InputStream和Reader抽象基类提供的read方法的返回值是从输入流中获取的字节或字符的个数,如果没有获取到则返回-1,然后结束读取操作!
作者: Alexander    时间: 2014-3-18 10:46
你这是没有对文件是否到结尾做判断,当读取文件时,如果到了末尾会返回-1,所以一般读取都这样操作
FileReader fr = new FileReader("c:\\1.txt")


int ch = -1;
//读到了末尾会返回-1,然后判断,不符合,退出循环
while((ch=fr.read) != -1) {
       System.out.print(char(ch));
}

而你的程序直接System.out.println(fr.read());
而且还是死循环,到了文件末尾了一直返回-1
就一直打印-1,所以就成你那样了

作者: 我爱的是你爱我_    时间: 2014-3-18 15:03
一直唯真,
如果读到了末尾会返回-1,需要判断一下,记得要关闭流,节省资源




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