0515-BufferedInputStream缓存输入输出流

package A10_IOStream;

import java.io.*;

/*
作为IO流的入门,今天我们见识一些更强大的流。比如能够高效读写的缓冲流,能够转换编码的转换流,能够持久化存储对象的序列化流等等。
这些功能更为强大的流,都是在基本的流对象基础之上创建而来的,就像穿上了铠甲的武士一样,相当于是对基本对象的一种增强。

BufferedInputStream 为另一个输入流添加一些功能,即缓冲输入以及支持 mark 和 reset 方法的能力。
    BufferedInputStream(InputStream in)创建一个 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。
    BufferedInputStream(InputStream in, int size)创建具有指定缓冲区大小的 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。
    int read()参见 InputStream 的 read 方法的常规协定。
    read(byte[] b, int off, int len)从此字节输入流中给定偏移量处开始将各字节读取到指定的 byte 数组中。
    void close()关闭此输入流并释放与该流关联的所有系统资源。
BufferedOutputStream
    BufferedOutputStream(OutputStream out) 创建一个新的缓冲输出流,以将数据写入指定的底层输出流。
    BufferedOutputStream(OutputStream out, int size)创建一个新的缓冲输出流,以将具有指定缓冲区大小的数据写入指定的底层输出流。
    void flush()刷新此缓冲的输出流。
    void write(byte[] b, int off, int len)将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此缓冲的输出流。
    void write(int b)将指定的字节写入此缓冲的输出流。
 */
//本示例通过缓冲字节流实现文件复制
public class D07BufferedInputStream {
    public static void main(String[] args) {
        copyFileWithBuffered("D:\\[秘密]引力法则.mkv", "D:\\[秘密]引力法则_副本.wmv");
    }

    public static void copyFileWithBuffered(String src, String tar) {
        File file = new File(src);
        if (!file.exists()) {
            System.out.println("源文件不存在!");
            return;
        }
        long currTime = System.currentTimeMillis();
        try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(src));
             BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(tar));) {
            byte[] buff = new byte[1024 * 1024 * 64];  //1024*1024*64 代表创建缓冲区大小为64Mb
            int len = 0;
            while ((len = bis.read(buff)) != -1) {
                bos.write(buff,0,len);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        long finishTime = System.currentTimeMillis();
        System.out.println("文件复制耗时:" + Math.round(finishTime - currTime)*0.001+"(毫秒)");
    }
}

 

posted @ 2020-05-15 10:39  lybingyu  阅读(278)  评论(0编辑  收藏  举报