黑马程序员技术交流社区

标题: 使用缓冲区,没有办法得到文本的行数? [打印本页]

作者: Super_Class    时间: 2013-5-25 10:28
标题: 使用缓冲区,没有办法得到文本的行数?
本帖最后由 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.         }
复制代码

作者: 蔡增辉    时间: 2013-5-25 11:15
你这段代码有问题:

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

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

1.PNG





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