使用字节流实现媒体文件的复制
2015-07-19 18:29
633 查看
package io.io6; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; /** *@description:复制媒体文件,以mp3为例 *@author:wang_bjian *@date:2015-7-19下午5:17:29 */ public class CopyFileTest { private static final int BUFFER_SIZE = 1024; public static void main(String[] args) { // copy_1(); // copy_2(); // copy_3(); copy_4(); } /** * 第四种方式:-----最快 * int read(byte[] b, int off, int len) 从此字节输入流中给定偏移量处开始将各字节读取到指定的 byte 数组中。 * 执行时间:1437301051607-1437301051604=3 */ private static void copy_4() { FileInputStream input=null; FileOutputStream output=null; BufferedInputStream bufis=null; BufferedOutputStream bufos=null; try { input=new FileInputStream("F:\\music_baojian\\music\\白若溪-追梦人.mp3"); bufis=new BufferedInputStream(input); output =new FileOutputStream("白若溪_追梦人.mp3"); bufos =new BufferedOutputStream(output); byte[] bytes=new byte[BUFFER_SIZE]; int len=0; System.out.println(System.currentTimeMillis()); while((len=bufis.read(bytes))!=-1){ bufos.write(bytes,0,len); } System.out.println(System.currentTimeMillis()); } catch (Exception e) { e.printStackTrace(); }finally{ try { if(bufis!=null){ bufis.close(); } if(bufos!=null){ bufos.close(); } } catch (IOException e) { e.printStackTrace(); } } } /** * *使用缓冲区复制文件 * int read()从此输入流中读取一个数据字节。 * 执行时间:1437300321264-1437300321204=60 */ private static void copy_3() { FileInputStream input=null; FileOutputStream output=null; BufferedInputStream bufis=null; BufferedOutputStream bufos=null; try { input=new FileInputStream("F:\\music_baojian\\music\\白若溪-追梦人.mp3"); bufis=new BufferedInputStream(input); output =new FileOutputStream("白若溪_追梦人.mp3"); bufos =new BufferedOutputStream(output); int ch=0; System.out.println(System.currentTimeMillis()); while((ch=bufis.read())!=-1){ bufos.write(ch); } System.out.println(System.currentTimeMillis()); } catch (Exception e) { e.printStackTrace(); }finally{ try { if(bufis!=null){ bufis.close(); } if(bufos!=null){ bufos.close(); } } catch (IOException e) { e.printStackTrace(); } } } /** * 第二种实现方式: * int read() 从此输入流中读取一个数据字节。 * 千万不能用,效率非常低 * 执行时间:1437300470937-1437300464748=6189 */ private static void copy_2() { FileInputStream input=null; FileOutputStream output=null; try { input=new FileInputStream("F:\\music_baojian\\music\\白若溪-追梦人.mp3"); output =new FileOutputStream("白若溪_追梦人.mp3"); int ch=0; System.out.println(System.currentTimeMillis()); while((ch=input.read())!=-1){ output.write(ch); } System.out.println(System.currentTimeMillis()); } catch (Exception e) { e.printStackTrace(); }finally{ try { if(input!=null){ input.close(); } if(output!=null){ output.close(); } } catch (IOException e) { e.printStackTrace(); } } } /** * 第一种实现方式: * read(byte[] b, int off, int len): * 从此输入流中将最多 len 个字节的数据读入一个 byte 数组中。 * 执行时间:1437300734527-1437300734516=11 */ private static void copy_1() { FileInputStream input=null; FileOutputStream output=null; try { input=new FileInputStream("F:\\music_baojian\\music\\白若溪-追梦人.mp3"); output =new FileOutputStream("白若溪_追梦人.mp3"); byte[] bytes=new byte[BUFFER_SIZE]; int len=0; System.out.println(System.currentTimeMillis()); while((len=input.read(bytes))!=-1){ output.write(bytes, 0, len); } System.out.println(System.currentTimeMillis()); } catch (Exception e) { e.printStackTrace(); }finally{ try { if(input!=null){ input.close(); } if(output!=null){ output.close(); } } catch (IOException e) { e.printStackTrace(); } } } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统