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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马晓志 中级黑马   /  2014-3-18 10:20  /  912 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

随便找个文本文件试试下面代码,很简单
  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. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

3 个回复

正序浏览
一直唯真,
如果读到了末尾会返回-1,需要判断一下,记得要关闭流,节省资源
回复 使用道具 举报
你这是没有对文件是否到结尾做判断,当读取文件时,如果到了末尾会返回-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,所以就成你那样了

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
无限循环当然可以有那么多的-1.InputStream和Reader抽象基类提供的read方法的返回值是从输入流中获取的字节或字符的个数,如果没有获取到则返回-1,然后结束读取操作!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马