IO流之缓冲流

  1. 缓冲流的作用:提供流的读取、写入的速度

    提高读写速度的原因:内部提供了一个缓冲区

代码演示:缓冲流实现非文本文件的复制

package com.yicurtain.IO;

import org.junit.Test;

import java.io.*;

public class bufferedTest {
//缓冲流实现非文本文件的复制
    @Test
    public void bufferedStreamTest(){
//        1.造文件路径
        BufferedInputStream  bfis = null;
        BufferedOutputStream bfos = null;
        try {
            File file1 = new File("beauty.jpg");
            File file2 = new File("beauty1.jpg");

//        2.造流
//            2.1 造节点流
            FileInputStream fis = new FileInputStream(file1);
            FileOutputStream  fos = new FileOutputStream(file2);

//               2.2 造缓冲流
            bfis = new BufferedInputStream(fis);

            bfos = new BufferedOutputStream(fos);

//        3.实现读入和写入的操作
            byte[] buffer = new byte[10];
            int len;
            while ((len=bfis.read(buffer))!=-1){
                bfos.write(buffer,0,len);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            //        4.关闭流:先关外面的流,在关里面的流.但是关闭外层的流的时候,里面的流会自动关闭;因此只需关闭外层流。

                try {
                    if (bfis!=null)
                    bfis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            try {
                if (bfos!=null)
                bfos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }



    }
}

代码演示:缓冲流实现文本文件的复制

 //缓冲流实现文本文件的复制
    @Test
    public void bufferedFileReaderWriteTest(){
        //1.简写:造文件路径,并且造流。
        BufferedReader br = null;
        BufferedWriter bw = null;
        try {
            br = new BufferedReader(new FileReader(new File("科技英语.txt")));
            bw = new BufferedWriter(new FileWriter(new File("科技英语1.txt")));

//        2.实现读入和写入的操作
            char[] cbuf = new char[5];
            int len;
            while ((len=br.read(cbuf))!=-1){
                bw.write(cbuf,0,len);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            //        3.关闭流

            try {
                if (br!=null)
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                if (bw!=null)
                bw.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

        }


    }
posted on 2021-07-16 17:15  yicurtain  阅读(39)  评论(0)    收藏  举报