您的位置:首页 > 其它

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();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: