码迷,mamicode.com
首页 > 编程语言 > 详细

Java IO(input output)流<二>

时间:2015-06-14 16:39:38      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:

一.字符流的缓冲区

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 }

运行结果

技术分享

   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);
        }
        
    }

}

运行结果

技术分享

二.综合实例

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

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)流<二>

标签:

原文地址:http://www.cnblogs.com/3WWanXiang/p/4575219.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!