FileInputStream与BufferedInputStream的对比
FileInputStream inputStream = new FileInputStream("d://vv.mp4");
FileOutputStream outputStream = new FileOutputStream("v.mp4");
int len;
// 一次读取一个字节,每读取一个字节都要实现一次与硬盘的交互操作
while ((len = inputStream.read()) != -1) {
outputStream.write(len);
}
FileInputStream inputStream = new FileInputStream("d://vv.mp4");
FileOutputStream outputStream = new FileOutputStream("v.mp4");
int len;
byte[] bs = new byte[1024];
//这里添加了一个缓存数组,每次从硬盘读取1024个字节,也就是说,每读取1024个字节才与硬盘实现一次交互
while ((len = inputStream.read(bs)) != -1) {
outputStream.write(bs, 0, len);
}
FileInputStream inputStream = new FileInputStream("d://vv.mp4");
BufferedInputStream bis = new BufferedInputStream(inputStream); //默认有8M的缓存
FileOutputStream outputStream = new FileOutputStream("IP.mp4");
BufferedOutputStream bos = new BufferedOutputStream(outputStream);
int len;
byte[] bs = new byte[1024];
while ((len = bis.read(bs)) != -1) {
bos.write(bs, 0, len); //先从硬盘读出8M到缓存中。然后read,这里的read并不是从硬盘中读取,而是从那8M缓存(内存)中读取,自然要比从硬盘中快得多。8M缓存用完后又会从硬盘补充(也就是说,一次从硬盘获取8M字节的数据) 。每8M与硬盘交互一次
}
以上三种方式在效率上递增,用BufferedInputStream效率最高(特别是对小文件)。
另外,对于BufferOutputStream和FileOutputStream也是一样,BufferOutputStream的write是把字节写入自带的缓存中(flush之后才向硬盘写),而FileOutputStream则是一次一个字节的向硬盘写。
FileInputStream与BufferedInputStream的对比的更多相关文章
- FileInputStream 与 BufferedInputStream 效率对比
我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3550158.html ,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体 ...
- FileInputStream和BufferedInputStream的区别
FileInputStream 属于数据源 BufferedInputStream 属于FileInputStream的一个装饰 BufferedInputStream 有个内部缓冲区当read时会先 ...
- Java API —— IO流( FileInputStream & FileOutputStream & BufferedInputStream & BufferedOutputStream )
1.IO流概述 · IO流用来处理设备之间的数据传输 · 上传文件和下载文件 · Java对数据的操作是通过流的方式 · Java用于操作流的对象都在IO包中 2.IO ...
- java Io流中FileInputStream和BufferedInputStream的速度比较
首先是对FileInputStream 加上 FileOutputStream 对文件拷贝的应用 我这里拷贝的是一个视频.当然,你们拷贝什么都可以,当文件越大时效果越明显 下面是对BufferedIn ...
- java - day013 - 流, FileInputStream, BufferedInputStream,
流 Stream 把数据的读写,抽象成数据在管道中流动. 流是单向的 输入流, 只能用来读取数据 输出流, 只能用来输出数据 流只能顺序读写数据 流只能一次性从头到尾读写数据 流动过的数据,不能反复流 ...
- Java IO流学习总结三:缓冲流-BufferedInputStream、BufferedOutputStream
Java IO流学习总结三:缓冲流-BufferedInputStream.BufferedOutputStream 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/ ...
- BufferedInputStream 缓冲输入字节流 -------上
package com.BufferedInputStreamUse; import java.io.BufferedInputStream; import java.io.File; import ...
- bufferedinputStream操作
import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java ...
- 深入研究BufferedInputStream内幕
目录 1 概述 2 BufferedInputStream源码分析 3 BufferedInputStream在实际场景中,没有太多用处 4 BufferedInputStream唯一使用场景 1 概 ...
随机推荐
- java设计模式--观察者模式(Observer)
java设计模式--观察者模式(Observer) java设计模式--观察者模式(Observer) 观察者模式的定义: 定义对象间的一种一对多的依赖关系.当一个对象的状态发生改变时,所有依赖于它的 ...
- Oracle数据库date类型与Java中Date的联系与转化
以下是对Java中的日期对象与Oracle中的日期之间的区别与联系做点说明,以期对大家有所帮助.new Date():分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒),就是系统当前 ...
- Web 前台优化
大型网站--前端性能优化和规范 2013-10-28 09:00 by 贤达, 2769 阅读, 10 评论, 收藏, 编辑 Web性能涉及的范围太广,但一般web开发者在程序上线以后很多都曾遇到 ...
- 2013-8:SDCE大会笔记
百度移动云三大开发框架:Clouda,SiteApp,AppBuilder MBaaS解决高性能Server很难的问题 百度开放云的区域运营服务于创业者 Pinterest架构变迁: 互联网就是把线下 ...
- ASP.NET Core Api网关Ocelot的中文文档
架构图 入门 不支持 配置 路由 请求聚合 GraphQL 服务发现 微服务ServiceFabric 认证 授权 Websockets 管理 流量控制 缓存 QoS服务质量 转换Headers 转换 ...
- 使用Rapidxml读取xml文件
现有xml文件如上,写在一个string中.需要获取节点上元素的类别和属性信息,并存储到结构体表中. 结构体如下: 得到的结果如下:
- 使用 Babylon.js 在 HTML 页面加载 3D 对象
五一 Windwos Blogs 推了一篇博客, Babylon.js v3.2 发布了.因为一直有想要在自己博客上加载 3D 对象的冲动,这两天正好看到了,就动手研究研究.本人之前也并没有接触过 W ...
- Django rest framework(7)----分页
目录 Django rest framework(1)----认证 Django rest framework(2)----权限 Django rest framework(3)----节流 Djan ...
- 【踩坑】iconfont使用异常bug
你见过html页面上'x'字符变成打印机图标么?一般人应该没有. -----------------------诡异bug----------------------- 今天测试报了一个bug,说页面 ...
- Archlinux安裝指南(uefi+gpt)
1.系统安装前的一些准备 首先在Archlinux官网下载镜像文件,然后刻录到U盘或光盘上.在我的机器上刻录arch镜像文件到U盘后启动不了,因为时间问题我没做过多的探索,所以后面直接刻录到光盘,用光 ...