IO字符流缓冲区知识点分解与讲解

来源:互联网 发布:建筑设计需要什么软件 编辑:程序博客网 时间:2024/05/16 04:54

注意:(1)readLine()和newLine()方法的使用。

           (2)使用缓冲区注意要刷新即:xxx.flush()

字符流缓冲区:
缓冲区出现提高流的的读写效率。

所以在创建缓冲区之前,必须要先有流对象。

对应类:
BufferedWriter。
BufferedReader。
缓冲区要结合流才可以使用。

该缓冲区中提供了一个跨平台的换行符:newLine()方法
*/
import java.io.*;
class BufferedWriterDemo
{
 public static void main(String[] args) throws IOException
 {
  //创建一个字符写入流对象。
  FileWriter fw =new FileWriter("buf.txt");
  
  //为了提高字符写入流效率,加入了缓冲技术。
  //只要将需要被提高效率的流对象作为参数传递给缓冲区的构造即可。
  BufferedWriter bufw = new BufferedWriter(fw);

  for(int x=1; x<5; x++)
  {
   bufw.write("abcde"+x);
   bufw.newLine();
   bufw.flush();
  }
  //记住,只要用到缓冲区,就要记得刷新。
  //bufw.flush();

  //其实关闭缓冲区,就是在关闭缓冲区中的流对象。
  bufw.close();
 }
}

————————————————————————————————————

加强:

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

readLine方法返回的时候只返回回车符之前的数据内容,并不返回回车符。
*/

import java.io.*;
class BufferedReaderDemo
{
 public static void main(String[] args) throws IOException
 {
  //创建一个读取流对象和文件相关联。
  FileReader fr = new FileReader("buf.txt");
  
  //为了提高效率,加入缓冲技术,将字符读取流对象作为参数传递给缓冲对象的构造函数。
  BufferedReader bufr = new BufferedReader(fr);

  String line = null;

  while((line=bufr.readLine())!=null)
  {
   System.out.println(line);
  }
  
  bufr.close();
 }
}

——————————————————————————————————

继续加强:

/*
通过缓冲区复制一个.java文件

*/

import java.io.*;
class CopyTextByBuf
{
 public static void main(String[] args)
 {
  BufferedReader bufr = null;
  BufferedWriter bufw = null;

  try
  {
   bufr = new BufferedReader(new FileReader("BufferedWriterDemo.java"));
   bufw = new BufferedWriter(new FileWriter("bufWriter_Copy.txt"));

   String line = null;//两个流之间的中转站,读一个字符就写一个字符

   while((line=bufr.readLine())!=null)
   {
    bufw.write(line);
    bufw.newLine();
    bufw.flush();
   }
  }
  catch (IOException e)
  {
   throw new RuntimeException("读写失败!");
  }
  finally
  {
   try
   {
    if(bufr!=null)
     bufr.close();
   }
   catch (IOException e)
   {
    throw new RuntimeException("读关闭失败!");
   }
   try
   {
    if(bufw!=null)
     bufw.close();
   }
   catch (IOException e)
   {
    throw new RuntimeException("写入关闭失败!");
   }
  }
 }
}

 

原创粉丝点击