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

java基础知识回顾之javaIO类---BufferedReader和BufferedWriter

时间:2014-09-04 00:04:47      阅读:285      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   os   io   使用   java   strong   ar   

使用了装饰设计模式:此类的设计是为了提高流操作数据的效率。思想就是定义容器将数据进行临时存储,对于缓冲区对象,其实就是将这个容器进行了分装,并提供了更高效的操作方法。

原理;
1,使用流的read方法从源中读取一批数据存储到缓冲区的数组中。
2,通过计数器记录住存储的元素个数。
3,通过数组的角标来获取数组中的元素(从缓冲区中取数据).
4,指针会不断的自增,当增到数组长度,会归0.计数器会自减,当减到0时,就在从源拿一批数据进缓冲区。

BufferReader:
package com.lp.ecjtu;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class BufferReaderDemo {

    /**
     * @param args
     * @throws IOException
     * 
     * 该缓冲去提供了一个的读取一行  readLine()方法,当返回null时读到末尾
     */
    public static void main(String[] args) throws IOException {
        //创建一个读取流对象和文件相关联
        FileReader fr = new FileReader("FileReaderDemo.java");
        //为了提高字符读取的效率,加入缓冲技术
        //将需要被提高效率的流对象作为参数传入缓冲区的构造方法即可
        BufferedReader bw = new BufferedReader(fr);
        String line = null;
        /*line = bw.readLine();
        System.out.println("******"+line);//一次性读取一行
        String line1 = bw.readLine();
        System.out.println("******"+line1);
        String line2 = bw.readLine();
        System.out.println("******"+line2);*/
        while((line=bw.readLine()) != null){
            System.out.println(line);
        }
        bw.close();
        
    }

}

BufferWriter:

package com.lp.ecjtu;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class BufferWriterDemo {

    /**
     * @param args
     * @throws IOException
     * 
     * 该缓冲去提供了一个跨平台的换行符  newLine方法
     */
    public static void main(String[] args) throws IOException {
        //创建一个字符写入流对象
        FileWriter fw = new FileWriter("buf.txt");
        //为了提高字符写入的效率,加入缓冲技术
        //将需要被提高效率的流对象作为参数传入缓冲区的构造方法即可
        BufferedWriter bw = new BufferedWriter(fw);
        for(int i=0;i<5;i++){
            bw.write("abcd"+i);
            bw.newLine();
            bw.flush();
        }
    }
}

通过缓冲区将一个文本的内容复制到另一个文件当中:

package com.lp.ecjtu;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class CopyTextByBuffer {
    
    /**
     * @param args
     * readLine()方法返回回车符之前数据的内容,并不返回回车符,可以通过newLine()方法换行
     */
    public static void main(String[] args) {
        BufferedReader bufr = null;
        BufferedWriter bufw = null;
        try {
             bufr = new BufferedReader(new FileReader("FileReaderDemo.java"));
             bufw = new BufferedWriter(new FileWriter("bufferWriterCopy.txt"));
             String line = null;
             while((line=bufr.readLine())!=null){
                 bufw.write(line);
                 bufw.newLine();
                 bufw.flush();
             }
        } catch (FileNotFoundException e) {
            throw new RuntimeException("没有找到指定文件!请确认文件名称是否正确!");
        }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("写入关闭失败!");
            }
        }
    }
}

 

java基础知识回顾之javaIO类---BufferedReader和BufferedWriter

标签:style   blog   color   os   io   使用   java   strong   ar   

原文地址:http://www.cnblogs.com/200911/p/3955038.html

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