黑马程序员技术交流社区
标题:
分享一个案例,普通字节流 与 高效字节流的速率区别
[打印本页]
作者:
Fate_stay
时间:
2016-9-17 22:01
标题:
分享一个案例,普通字节流 与 高效字节流的速率区别
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyMP4 {
public static void main(String[] args) throws IOException {
// 开始计时
long start = System.currentTimeMillis();
System.out.println("开始复制...");
// 方式1: 采用基本的流,一次一个字节的方式复制
method1("e:\\abc.mp4","d:\\copy1.mp4"); // 太慢了..
// 方式2: 采用基本的流,一次多个字节的方式赋值
//method2("e:\\abc.mp4","d:\\copy2.mp4");
// 方式3: 采用高效的流,一次一个字节的方式复制
//method3("e:\\abc.mp4","d:\\copy3.mp4");
// 方式4: 采用高效的流,一次多个字节的方式赋值
//method4("e:\\abc.mp4","d:\\copy4.mp4");
// 结束计时
long end = System.currentTimeMillis();
System.out.println("复制结束...");
System.out.println("共耗时:"+(end - start)+"毫秒");
}
// 方式4: 采用高效的流,一次多个字节的方式赋值
private static void method4(String src, String dest) throws IOException {
// 1.创建高效流
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(src));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(dest));
// 2.读取数据
// a.定义数组
byte[] b = new byte[1024];
// b.定义有效长度
int len;
while((len = bis.read(b)) != -1) {
bos.write(b, 0, len);
}
// 3.关闭资源
bos.close();
bis.close();
}
// 方式3: 采用高效的流,一次一个字节的方式复制
private static void method3(String src, String dest) throws IOException {
// 1.创建流
FileInputStream fis = new FileInputStream(src);
FileOutputStream fos = new FileOutputStream(dest);
// 对字节流进行封装
BufferedInputStream bis = new BufferedInputStream(fis);
BufferedOutputStream bos = new BufferedOutputStream(fos);
// 2.读取数据
int len;
while((len = bis.read()) != -1) {
bos.write(len);
}
// 3.关闭资源
bos.close();
bis.close();
fos.close();
fis.close();
}
// 方式2: 采用基本的流,一次多个字节的方式赋值
private static void method2(String src, String dest) throws IOException {
// 1.创建流
FileInputStream fis = new FileInputStream(src);
FileOutputStream fos = new FileOutputStream(dest);
// 2.读取数据
// a.定义数组,存储数组长度的字节
byte[] b = new byte[1024];
// b.定义有效长度
int len;
while((len = fis.read(b)) != -1) {
fos.write(b, 0, len);
}
// 3.关闭资源
fos.close();
fis.close();
}
// 方式1: 采用基本的流,一次一个字节的方式复制
private static void method1(String src, String dest) throws IOException {
// 1.创建流
FileInputStream fis = new FileInputStream(src);
FileOutputStream fos = new FileOutputStream(dest);
// 2.读取数据
int b;
while((b = fis.read()) != -1) {
fos.write(b);
}
// 3.关闭资源
fos.close();
fis.close();
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2