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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张海洋 中级黑马   /  2013-3-24 20:25  /  2504 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张海洋 于 2013-3-24 21:06 编辑

BufferedReader、BufferedWriter

3 个回复

倒序浏览
/*
缓冲区的出现是为了提高流的操作效率而出现的
所以在创建缓冲区之前,必须要有流对象
该缓冲区中提供了一个跨平台的换行符newLine();
*/

import java.io.*;

public class BufferedWriterDemo
{
public static void main(String[] args)
{
  
  BufferedWriterDemo();

  BufferedReaderDemo();
}

/*
字符写入流缓冲区
*/
public static void BufferedWriterDemo()
{
  try
  {
   //创建一个字符写入流对象
   FileWriter fw=new FileWriter("d:\\a.txt");

   //为了提高字符写入流的效率,加入了缓冲技术
   //只要将需要被提高效率的流对象作为参数传递给缓冲区的构造函数即可
   BufferedWriter bw=new BufferedWriter(fw);
   for(int i=0;i<5;i++)
   {
    bw.write("abc"+i);
    bw.newLine();
    bw.flush();
   }
   bw.close();
  }
  catch(Exception ex)
  {
   ex.printStackTrace();
  }
}

/*
字符读取流缓冲区
该缓冲区提供一个一次读一行的方法readLine(),方便对文本数据的读取
当返回null时,表示读到文本末尾
*/

public static void BufferedReaderDemo()
{
  try
  {
   //创建一个字符读取流对象并和文件关联
   FileReader fr=new FileReader("d:\\a.txt");
   //为了提高效率,加入缓冲技术,将字符读取流对象作为参数传递给缓冲对象的构造函数
   BufferedReader br=new BufferedReader(fr);
   String str=null;

   while((str=br.readLine())!=null)
   {   
    System.out.println(str);
   }
   br.close();
  }
  catch (Exception ex)
  {
   ex.printStackTrace();
  }
}
}
回复 使用道具 举报
1. java.io.BufferedReader和java.io.BufferedWriter类各拥有8192字符的缓冲区。当BufferedReader在读取文本文件时,会先尽量从文件中读入字符数据并置入缓冲区,而之后若使用read()方法,会先从缓冲区中进行读取。如果缓冲区数据不足,才会再从文件中读取,使用BufferedWriter时,写入的数据并不会先输出到目的地,而是先存储至缓冲区中。如果缓冲区中的数据满了,才会一次对目的地进行写出。
2. 从标准输入流System.in中直接读取使用者输入时,使用者每输入一个字符,System.in就读取一个字符。为了能一次读取一行使用者的输入,使用了BufferedReader来对使用者输入的字符进行缓冲。readLine()方法会在读取到使用者的换行字符时,再一次将整行字符串传入。
3. System.in是一个位流,为了转换为字符流,可使用InputStreamReader为其进行字符转换,然后再使用BufferedReader为其增加缓冲功能
回复 使用道具 举报
本帖最后由 彭波 于 2013-3-24 20:42 编辑

BufferedReader是读取字符流缓冲区
BufferedWriter是写入字符流缓冲区
这两个都是提高字符读取与写入的速度
这两个要结合相应的字符流才能使用

可以看看字符流体系:
http://bbs.itheima.com/forum.php?mod=attachment&aid=MTQxODZ8NGEzZTcxMWQyNWJhMmE3YjdkMmE0Yzg5MjA2NGVmYWR8MTcxOTcwMDc0Mg%3D%3D&request=yes&_f=.png

捕获1.PNG (21.09 KB, 下载次数: 36)

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