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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 Super_Class 于 2013-5-25 11:27 编辑
  1. public static void read3(File file) throws Exception{
  2.         FileInputStream fis = new FileInputStream(file);
  3.         byte []buf = new byte[1024];
  4.         int b = 0;
  5.         int count = 1;
  6.         while((b = fis.read(buf) )!=-1)
  7.                 if(b == '\n')
  8.                 count++;
  9.         fis.close();
  10.         System.out.println(count);
  11. }
复制代码
用这个代码不论是读哪个都是1.

但是用以下两个代码都没有问题
  1. public static void read1(File file)throws Exception{ //这个是每次读一个字符
  2.         FileInputStream fis = new FileInputStream(file);
  3.         int b = 0;
  4.         int count = 1;
  5.         while((b = fis.read()) != -1){
  6.                 if(b == '\n')
  7.                 count++;
  8.         }
  9.         fis.close();
  10.         System.out.println(count);
  11. }
复制代码
以下这个是一下都读进内存中,


  1. public static void read2(File file){
  2.         try{
  3.                 FileInputStream fis = new FileInputStream(file);
  4.                 BufferedInputStream bis = new BufferedInputStream(fis);
  5.                 int b = 0;
  6.                 int count = 1;
  7.                 while((b = bis.read())!=-1)
  8.                         if(b == '\n')
  9.                         count++;
  10.                 fis.close();
  11.                 bis.close();
  12.                 System.out.println(count);
  13.         }catch (Exception e) {
  14.                 System.out.println(e.getMessage());
  15.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

1 个回复

倒序浏览
你这段代码有问题:

变量b返回的是读入数组buf的个数,而不是读取到的字节;

1.PNG (8.79 KB, 下载次数: 0)

1.PNG

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马