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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 滴水石穿 中级黑马   /  2014-12-20 13:01  /  1230 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*
* 利用缓冲区读取文件
*/
public class BufferedReaderDemo {

        public static void main(String[] args) {
               
                BufferedReader br = null;
               
                try {
                       
                        br = new BufferedReader(new FileReader("d:\\temp\\java.txt"));
                       
                        String str=null;
                       
//                        char[] ch = new char[1024]; 为什么不用定义临时存储?
                       
                        while((str=br.readLine())!=null){
                               
                                System.out.println(str);
                        }
                         
                       
                } catch (FileNotFoundException e) {
                        // TODO 自动生成的 catch 块
                        e.printStackTrace();
                } catch (IOException e) {
                        // TODO 自动生成的 catch 块
                        e.printStackTrace();
                }
        }
}

//为什么不定义临时存储器 把数据存储到这里 在去读?谢谢

5 个回复

倒序浏览
你当然不定义临时存储了,因为你使用的方法是readLine,给你讲讲readLine 是啥,readline 本身就调用了存储器,
  1. public String myReadLine() throws IOException
  2.                 {
  3.                         lineNumber++;
  4.                        
  5.                         StringBuilder sb = new StringBuilder();
  6.                         int ch = 0;
  7.                         while((ch = r.read())!= -1)
  8.                         {
  9.                                 if(ch =='\r')
  10.                                         continue;
  11.                                 if(ch =='\n')
  12.                                         return sb.toString();
  13.                                 else
  14.                                          sb.append((char)ch);
  15.                         }
  16.                         if(sb.length()!= 0)
  17.                                 return sb.toString();
  18.                         return null;
  19.                 }
复制代码
回复 使用道具 举报
这是我自己写的readLine 方法和java 的一样功能,里边的sb就是存储器,所以你调用上边的readLine 方法的时候直接返回的就是字符串了还带空格和换行的字符串,多高级,你还定义啥存储器。
回复 使用道具 举报
你这里定义的临时存储器是字符数组,需要一个一个字符的读取并存到临时存储器中才行。readLine()是按行读取了,自然就不能存放到你定义的数组存储器了。而且readLine()中已经利用了临时存储器的功能。
回复 使用道具 举报
不用 ! 这个就是一个容器  把一行的数据保存到这里
回复 使用道具 举报
readLine()方法内部调用了read()方法,可以简单理解为:readLine()是加强版的read()
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马