当然和你自己使用的文件大小有关,这里只是简单测试
代码如下:
package com.smile.two;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class CopyPicDemo {
public static void main(String[] args) throws Exception {
Long start = System.currentTimeMillis();
// method1("diaochan.jpg","copy1.jpg");
// method2("diaochan.jpg","copy2.jpg");
// method3("diaochan.jpg","copy3.jpg");
method4("diaochan.jpg", "copy4.jpg");
Long end = System.currentTimeMillis();
System.out.println("复制用了" + (end - start) + "毫秒");
}
//高效输入输出流单字节读取
private static void method4(String srcFile, String destFile) throws Exception {
// 复制用了167毫秒
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFile));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destFile));
int by = 0;
while ((by = bis.read()) != -1) {
bos.write(by);
}
bos.close();
bis.close();
}
//高效输入输出流字节数组读取
private static void method3(String srcFile, String destFile) throws Exception {
// 复制用了9毫秒
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFile));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destFile));
byte[] bys = new byte[1024];
int len = 0;
while ((len = bis.read(bys)) != -1) {
bos.write(bys, 0, len);
}
bos.close();
bis.close();
}
//普通输入输出流字节数组读取
private static void method2(String srcFile, String destFile) throws Exception {
// 复制用了13毫秒
FileInputStream fis = new FileInputStream(srcFile);
FileOutputStream fos = new FileOutputStream(destFile);
byte[] bys = new byte[1024];
int len = 0;
while ((len = fis.read(bys)) != -1) {
fos.write(bys, 0, len);
}
fos.close();
fis.close();
}
//普通输入输出流单字节读取
private static void method1(String srcFile, String destFile) throws Exception {
// 复制用了3174毫秒
FileInputStream fis = new FileInputStream(srcFile);
FileOutputStream fos = new FileOutputStream(destFile);
int by = 0;
while ((by = fis.read()) != -1) {
fos.write(by);
}
fos.close();
fis.close();
}
}