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缓存输入输出流的更多相关文章

  1. Java 输入输出流 转载

    转载自:http://blog.csdn.net/hguisu/article/details/7418161 1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所 ...

  2. Java输入输出流(一)——常用的输入输出流

    1.流的概念:在Java中,流是从源到目的地的字节的有序序列.Java中有两种基本的流--输入流(InputStream)和输出流(OutputStream). 根据流相对于程序的另一个端点的不同,分 ...

  3. java输入输出流总结 转载

    一.基本概念 1.1 什么是IO?     IO(Input/Output)是计算机输入/输出的接口.Java中I/O操作主要是指使用Java进行输入,输出操作.     Java所有的I/O机制都是 ...

  4. 字符流;字节流;带缓冲的输入输出流;以及用scanner读文件

    概念: InputStream类是字节输入流的抽象类,是所有字节输入流的父类. OutputStream类是字节输入流的抽象类,是所有字节输出流的父类. In(可以理解为读)Out(可以理解为写) 一 ...

  5. Java输入输出流(转载)

    转自http://blog.csdn.net/hguisu/article/details/7418161 目录(?)[+] 1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作 ...

  6. java输入输出流(I/O)总结

    io流的 四个基本类 java.io包中包含了流式I/O所需要的所有类.在java.io包中有四个基本类:InputStream.OutputStream及Reader.Writer类,它们分别处理字 ...

  7. Java高级特性 第4节 输入输出流

    一.使用I/O操作文件 关键步骤: 使用File类操作文件或目录属性 使用FileInputStream类读文本文件 使用FileOutputStram类写文本文件 使用BufferedReader类 ...

  8. Java输入输出流(2)

    6. Java.IO流类库 1. io流的四个基本类 java.io包中包括了流式I/O所须要的全部类. 在java.io包中有四个基本类:InputStream.OutputStream及Reade ...

  9. Java精选笔记_IO流(字节流、InputStream、OutputStream、字节文件、缓冲区输入输出流)

    字节流 操作图片数据就要用到字节流. 字符流使用的是字符数组char[],字节流使用的是字节数组byte[]. 字节流读写文件 针对文件的读写,JDK专门提供了两个类,分别是FileInputStre ...

  10. Java基础—输入输出流

    流的概念 在Java中,流是从源到目的地的字节的有序序列.Java中有两种基本的流——输入流(InputStream)和输出流(OutputStream). 根据流相对于程序的另一个端点的不同,分为节 ...

随机推荐

  1. CodeForces Round 898 (div 4) H题解析

    CodeForces Round 898 (div 4)H. Mad  City 大致思路    对于有n条边和n个点,说明这个图里面只有一个环 并且两人同时开始和结束移动,所以可以得到当Valeri ...

  2. 前端实战之使用canvas合并图片

    最近做一个完整的系统,前端中涉及到一个推广图片的生成,其中推广图片是由一个变化的链接生成的二维码与一个固定图片拼接而成 实现demo: qrcode.png:https://images.cnblog ...

  3. 深度变分信息瓶颈——Deep Variational Information Bottleneck

    Deep Variational Information Bottleneck (VIB) 变分信息瓶颈 论文阅读笔记.本文利用变分推断将信息瓶颈框架适应到深度学习模型中,可视为一种正则化方法. 变分 ...

  4. vite2+vue3使用tsx报错React is not defined、h is not defined

    vite 为 .jsx 和 .tsx 文件提供开箱即用支持. 如果不是在 react 中使用 jsx,对于报错: React is not defined 需要在 vite.config.js 文件中 ...

  5. three.js 性能优化之模型转化与压缩

    模型转换 obj转gltf 安装插件 npm i -g obj2gltf 执行转换命令 obj2gltf -i 11-6.obj -o 11-6.gltf -u 模型压缩 安装gltf-pipelin ...

  6. 区分PO、VO、 BO、 DTO、 POJO

      分层领域模型规约: DO(Data Object):此结构与数据库表结构一一对应,通过DTO向上传输数据源对象. DTO(Data Transfer Object):数据传输对象,Service ...

  7. Qt/C++编写跨平台的推流工具(支持win/linux/mac/嵌入式linux/安卓等)

    一.前言 跨平台的推流工具当属OBS最牛逼,功能也是最强大的,唯一的遗憾就是多路推流需要用到插件,而且CPU占用比较高,默认OBS的规则是将对应画布中的视频画面和设定的音频一起重新编码再推流,意味着肯 ...

  8. Qt编写视频监控系统72-通过onvif增删改查OSD

    一.前言 之前监控系统中原创的onvif协议解析机制,已经能够满足绝大部分用户的需要,比如搜索设备.获取视频流地址并播放.云台控制.预置位管理.图片亮度色彩饱和度等参数设置等,近期又多了一个需求,那就 ...

  9. Qt编写地图综合应用45-路径规划

    一.前言 路径规划一般是根据起始点坐标经纬度和结束点坐标经纬度,查询出合适的路线.关于起始坐标和结束坐标,最开始做的是直接传入具体中文地址即可,后面百度地图不再开放此功能,貌似变成了收费功能,但是经纬 ...

  10. Qt编写安防视频监控系统40-onvif线程处理

    一.前言 整个onvif模块大部分的功能都有了以后,除了在demo上点点按钮可以执行获取结果显示外,最终还是要应用到视频监控中,在按钮上点点和系统中后台自动运行是两码事,比如onvif校时和事件订阅, ...