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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 花生壳 中级黑马   /  2014-2-9 10:42  /  1970 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

还在总结
1.定义了bufferreader 之后,读流用不用定义一个数组来存到 bufferreader中的数据???

  BufferedReader bReader=new BufferedReader(new InputStreamReader(new FileInputStream("d:/1.txt")));
   
        char[] buf=new char[100];
   //需要定义数组么?有点印象。bufferdreader 包含数组了,
        int ch=0;
        while((ch=bReader.read(buf))!=-1){
            String string=new String(buf,0,ch);
            System.out.println(string);
        }

这样写总感觉数组是多余的!

评分

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

查看全部评分

4 个回复

倒序浏览
本帖最后由 kira 于 2014-2-9 11:01 编辑

你这样写肯定是不对的 BufferedReader里面是传一个reader(FileReader)因为就是源就是文本
所以不需要转换流 而且你的FileInputStream 你要定义的话也要是字节数组 而不是char
既然定义了char就明确其为字符数组
定义字符数组是为了调用read方法的时候记录一个int 而它不等于负一就可以一直读取
我修改了下代码
  1. import java.io.BufferedReader;
  2. import java.io.FileInputStream;
  3. import java.io.FileNotFoundException;
  4. import java.io.FileReader;
  5. import java.io.IOException;

  6. public class Demo {

  7.         /**
  8.          * @param args
  9.          * @throws IOException
  10.          */
  11.         public static void main(String[] args) throws IOException {
  12.                 // TODO Auto-generated method stub
  13.                  BufferedReader bReader= new BufferedReader(new FileReader("d://1.txt"));
  14.                   
  15.                 char[] ch=new char[100];   //建议命名要统一化
  16.                 int len=0;
  17.                 
  18.                 while((len=bReader.read(ch))!=-1){
  19.                     System.out.println(new String(ch,0,len));
  20.                 }
  21.                 bReader.close();//关流
  22.         }

  23. }
复制代码



评分

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

查看全部评分

回复 使用道具 举报
BufferedReader中有readline()方法  直接读一整行的  这个比较方便

BufferedReader bReader=new BufferedReader(new InputStreamReader(new FileInputStream("d:/1.txt")));
   
        
        String line = null;
        while((line =bReader.readline() )!=null){
            String string=line;
            System.out.println(string);
        }

这样就行了   
回复 使用道具 举报
建议用上楼的BufferedReader中的readLine()方法,因为它是一次读取一行,比一个字节一个字节读的要快。
回复 使用道具 举报
学习了!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马