史上最全IO框架五(缓冲流)

IO之缓冲流
课程大纲
一、 缓冲流概述
1、 首先要明确一个概念:对文件或者其他目标频繁的操作,效率低,性能差。
2、 使用缓冲流的好处是能够更高效的读写信息,原理是现将数据缓冲起来,然后一起写入或者读取出来。
二、 BufferedInputStream
1、 public class BufferedInputStream extends FIlterInputStream
2、 BufferedInputStream 为另一个输入流添加一些功能,再创建BufferedInputStream时,会创建一个内部缓冲区数组,用于缓冲数据。
三、 BufferedOutputStream
1、 public class BufferedOutputStream extends FIlterOutputStream
2、 类实现缓冲的输出流,通过设置这种输出流,应用程序就可以将 各个字节写入底层输出流中,而不必针对每次字节写入调入底层系统。

四、 BufferedReader
1、 public class BufferedReader exrends Reader
2、 从字符输入流中读取文本,缓冲各个字符,从而实现字符,数组和行的高效读取。
3、 可以指定缓冲区的大小,或者可使用默认的大小,多数情况下默认值就足够大了。
五、 BufferedWriter
1、 public class BufferedReader extends writer
2、 将文本写入字符输出流,缓冲各个字符,从而提供单个字符,数组和字符串的高效写入,可以指定缓冲区的大小,或者可使用默认的大小,多数情况下默认值就足够大了。

字节缓冲流代码

package com.itheima.filedemo;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.Reader;

/**
* 字节缓冲流(缓冲流属于高效流)
* @author Administrator
*
*/
public class ZiJieBufferedStreamDemo {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    write();
    read();
}

/**
 * 使用字节缓冲流进行写操作
 */
public static void write(){

    try {
        //创建一个字节输出流对象
        OutputStream out = new FileOutputStream("E:\\1.txt");
        //根据字节输出流对象构造一个字节缓冲流
        BufferedOutputStream bos = new BufferedOutputStream(out);
        String info = "山不再高,有仙则名,学Java没威哥不行!";
        bos.write(info.getBytes());
        //一定记得刷新
        bos.flush();
        out.close();
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

/**
 * 使用字节缓冲流进行读操作
 */
public static void read(){

    try {
        //构造一个字节输入流对象
        InputStream in = new FileInputStream("E:\\1.txt");
        //根据字节输入流构造一个字节缓冲流
        BufferedInputStream bis = new BufferedInputStream(in);
        //根据字节缓冲流转换成字符流(转换流)
        Reader reader = new InputStreamReader(bis);
        char[] cs = new char[512];
        int len = -1;
        StringBuilder sb = new StringBuilder();
        while ((len = reader.read(cs)) != -1) {
            sb.append(new String(cs, 0, len));

        }
        reader.close();
        bis.close();
        in.close();
        System.out.println(sb);
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

}

字符缓冲流代码

package com.itheima.filedemo;

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

/**
* 字符缓冲流
* @author Administrator
*
*/
public class CharBufferedStreamDemo {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    //write();
    read();
}

/**
 * 使用字符缓冲流实现 写文件
 */
public static void write(){

    try {
        //构造一个字符输出流对象
        Writer writer = new FileWriter("E:\\1.txt");
        //根据字符输出流对象构造一个字符输出缓冲流对象
        BufferedWriter bw = new BufferedWriter(writer);
        String info = "小白,你怎么了?";
        bw.write(info);
        bw.flush();
        bw.close();
        writer.close();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

/**
 * 
 */
public static void read(){
    try {
        //创建一个字符输入流对象
        Reader reader = new FileReader("E:\\1.txt");
        //根据字符输入流构造一个字符输入缓冲流
        BufferedReader br = new BufferedReader(reader);
        char[] cs = new char[512];
        int len = -1;
        StringBuffer sb = new StringBuffer();
        while ((len = br.read(cs))!=-1) {
            sb.append(new String(cs,0,len));

        }
        br.close();
        reader.close();
        //输出
        System.out.println(sb);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值