zoukankan      html  css  js  c++  java
  • 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+"(毫秒)");
        }
    }
  • 相关阅读:
    PHP流程控制考察点
    PHP运算符考察点
    PHP的魔术常量
    android窗体溢出WindowManager$BadTokenException: Unable to add window -- token null is not for an applica
    android网络访问异常java.lang.SecurityException: Permission denied (missing INTERNET permission?)
    快速排序算法思想
    播放Assets下的指定音频时,变成播放所有音频了
    python-01-Python环境搭建
    eclipse安装svn
    DOM children方法
  • 原文地址:https://www.cnblogs.com/sdlz/p/12893492.html
Copyright © 2011-2022 走看看