首页 > 其他 > 详细

0515-BufferedInputStream缓存输入输出流

时间:2020-05-15 11:17:48      阅读:51      评论:0      收藏:0      [点我收藏+]
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+"(毫秒)");
    }
}

 

0515-BufferedInputStream缓存输入输出流

原文:https://www.cnblogs.com/sdlz/p/12893492.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!