IO流_字节流四种方式复制MP4并测试效率
2017-02-08 21:55
573 查看
package cn.itcast_06; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; /* * 需求:把e:\\哥有老婆.mp4复制到当前项目目录下的copy.mp4中 * * 哥有老婆.mp4文件大小:65,258,338 字节 * 字节流四种方法复制文件: * 基本字节流一次读写一个字节:共耗时:607844毫秒(607.844秒=10多分钟) * 基本字节流一次读写一个字节数组:共耗时:1042毫秒(1.042秒) * 高效字节流一次读写一个字节:共耗时:5575毫秒(5.575秒) * 高效字节流一次读写一个字节数组:共耗时:535毫秒(0.535秒) */ public class CopyMp4Demo { public static void main(String[] args) throws IOException { long start = System.currentTimeMillis(); method1("e:\\哥有老婆.mp4", "copy1.mp4"); // method2("e:\\哥有老婆.mp4", "copy2.mp4"); // method3("e:\\哥有老婆.mp4", "copy3.mp4"); // method4("e:\\哥有老婆.mp4", "copy4.mp4"); long end = System.currentTimeMillis(); System.out.println("共耗时:" + (end - start) + "毫秒"); } /** * 基本字节流一次读写一个字节 * * @param srcString * 数据源 * @param destString * 目的地 */ public static void method1(String srcString, String destString) throws IOException { // 封装数据源 FileInputStream fis = new FileInputStream(srcString); // 封装目的地 FileOutputStream fos = new FileOutputStream(destString); // 复制数据 int len = 0; while ((len = fis.read()) != -1) { fos.write(len); } // 释放资源 fos.close(); fis.close(); } /** * 基本字节流一次读写一个字节数组 * * @param srcString * 数据源 * @param destString * 目的地 */ public static void method2(String srcString, String destString) throws IOException { // 封装数据源 FileInputStream fis = new FileInputStream(srcString); // 封装目的地 FileOutputStream fos = new FileOutputStream(destString); // 复制数据 byte[] bys = new byte[1024]; int len = 0; while ((len = fis.read(bys)) != -1) { fos.write(bys, 0, len); } // 释放资源 fos.close(); fis.close(); } /** * 高效字节流一次读写一个字节 * * @param srcString * 数据源 * @param destString * 目的地 */ public static void method3(String srcString, String destString) throws IOException { // 封装数据源 BufferedInputStream bis = new BufferedInputStream(new FileInputStream( srcString)); // 封装目的地 BufferedOutputStream bos = new BufferedOutputStream( new FileOutputStream(destString)); // 复制数据 int len = 0; while ((len = bis.read()) != -1) { bos.write(len); } // 释放资源 bos.close(); bis.close(); } /** * 高效字节流一次读写一个字节数组 * * @param srcString * 数据源 * @param destString * 目的地 */ public static void method4(String srcString, String destString) throws IOException { // 封装数据源 BufferedInputStream bis = new BufferedInputStream(new FileInputStream( srcString)); // 封装目的地 BufferedOutputStream bos = new BufferedOutputStream( new FileOutputStream(destString)); // 复制数据 byte[] bys = new byte[1024]; int len = 0; while ((len = bis.read(bys)) != -1) { bos.write(bys, 0, len); } // 释放资源 bos.close(); bis.close(); } }
相关文章推荐
- 算法训练 未名湖边的烦恼
- UIButton
- BZOJ 1924 所驼门王的宝藏【思维建图+强连通缩点+DAG图上做最长路】这题好尼玛综合........
- 奥运
- bzoj2002 [Hnoi2010]Bounce 弹飞绵羊
- bzoj2002 [Hnoi2010]Bounce 弹飞绵羊
- wordpress中文路径出现404错误的解决办法
- 企业服务大爆发,HR SaaS的机会与挑战
- Python爬虫进阶三之Scrapy框架安装配置
- UVa 242 邮票和信封(完全背包)
- 蓝领or白领 谁会先被机器人取代?
- JQuery实现鼠标滑过显示导航下拉列表
- node.js 调试问题
- java中创建对象的5种方式
- [Cocos2dx]面试题汇总一
- 使用百度富文本编辑器UEditor碰到的问题
- Centos6.6系统root用户密码恢复案例
- Python爬虫进阶二之PySpider框架安装配置
- Python爬虫进阶一之爬虫框架概述
- 使用express.js框架一步步实现基本应用以及构建可扩展的web应用