转载

Java IO(input output)流<二>

一.字符流的缓冲区

1.什么是缓冲区

缓冲区又称为缓存,它是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,

这部分预留的空间就叫做缓冲区。缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区。

2.为什么要引入缓冲区

缓冲区就是一块内存区,它用在输入输出设备和CPU之间,用来缓存数据。它使得低速的输入输出设备和高速的CPU能够协调工作,避免低

速的输入输出设备占用CPU,解放出CPU,使其能够高效率工作。

3.字符流的缓冲

3.1 BufferWriter实例

 1 import java.io.*;  2   3 //使用BufferedWriter缓冲区对象来读取数据  4 public class BufferedWriterDemo {  5   6     public static void main(String[] args) throws IOException{  7         //新建一个文件流来存储数据,并传递给BufferedWriter对象  8         FileWriter fw =new FileWriter("BuffWriter_copy.txt");  9         //新建缓冲区对象并将文件流对象传递给其构造函数 10         BufferedWriter bufw=new BufferedWriter(fw); 11         //往缓冲区中写数据 12         for(int i=0;i<10;i++){ 13              14          bufw.write("abcde"+i); 15           16          bufw.newLine(); 17          //将内存中的数据刷新到文件中 18          bufw.flush(); 19         } 20         //关闭缓冲区 21         bufw.close(); 22     } 23  24 }

运行结果

Java IO(input output)流&lt;二&gt;

3.2 BufferedReader实例

import java.io.*; /*  * 建立BufferedReader缓冲区,使用newLine和readLine方法  */ public class BUfferedReaderDemo {  public static void main(String[] args) throws IOException {   //新建文件流,并将数据传递给缓冲区构造函数   FileReader fr = new FileReader("test.txt") ;   //新建缓冲区,调用其构造函数   BufferedReader bufr = new BufferedReader(fr);   //将数据打印   //因为BufferedReader返回的最后数据为String,如果到了最后则为null   String line=null;   //调用BufferedReader的readLine方法   while((line=bufr.readLine())!=null){    System.out.println(line);   }  } } 

运行结果

Java IO(input output)流&lt;二&gt;

二.综合实例

利用字符缓冲区来将一个文件内容复制到另一文件中

import java.io.*; /*  * 利用字符缓冲区来将一个文件内容复制到另一文件中  */ public class BufferWriterDemo {  public static void main(String[] args) {   //创建一个缓冲区写对象,并初始化为null   BufferedWriter bufw=null;   //创建一个缓冲区读对象,并初始化为null   BufferedReader bufr=null;   try{    //缓冲区的构造函数必须 有一个参数    //新建一个写文件的流并传递给缓冲区写对象的构造函数    bufw=new BufferedWriter(new FileWriter("buffer_copy.txt"));    //新建一个读文件的流并传递给缓冲区读对象的构造函数    bufr=new BufferedReader(new FileReader("FileRead.java"));    //缓冲区返回一个String值,当缓冲区中没有数据是值为null    String line=null;    //缓冲区写对象有一个readLine函数,用来按行读取数据    while((line=bufr.readLine())!=null){    //缓冲区写对象也有write函数      bufw.write(line);    //newLine将读到的数据换行,也就是按原来数据格式一致来存储      bufw.newLine();    //刷新数据到文件中      bufw.flush();    }   }   catch(IOException e){    throw new RuntimeException("读写错误");   }   finally{     try{       if(bufw!=null){     bufw.close();    }     }    catch(IOException e){     throw new RuntimeException("写错误");    }     try{      if(bufr!=null){       bufr.close();      }     }     catch(IOException e){      throw new RuntimeException("读错误");     }   }  } } 

运行结果

Java IO(input output)流&lt;二&gt;

正文到此结束
Loading...