Java基础知识强化之IO流笔记30:字节流4种方式复制mp4并测试效率

时间:2022-02-17 15:51:56

1. 需求:把f:\\Jick.mp4 复制到当前项目目录下的copy.mp4中

字节流四种方式复制文件:
  • 基本字节流一次读写一个字节
  • 基本字节流一次读写一个字节数组
  • 高效字节流一次读写一个字节
  • 高效字节流一次读写一个字节数组

2. 代码示例:

 package com.himi.iocopy;

 import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException; /*
* 需求:把f:\\Jick.mp4复制到当前项目目录下的copy.mp4中
*
* 字节流四种方式复制文件:
* 基本字节流一次读写一个字节(method1): 共耗时:138872 毫秒
* 基本字节流一次读写一个字节数组(method2): 共耗时:160 毫秒
* 高效字节流一次读写一个字节(method3): 共耗时:643 毫秒
* 高效字节流一次读写一个字节数组(method4): 共耗时:40 毫秒
*/
public class IOCopy {
public static void main(String[] args) throws IOException {
long start = System.currentTimeMillis(); //method1("f:\\Jick.mp4", "copy1.mp4");
//method2("f:\\Jick.mp4", "copy2.mp4");
//method3("f:\\Jick.mp4", "copy3.mp4");
method4("f:\\Jick.mp4", "copy4.mp4");
long end = System.currentTimeMillis();
System.out.println("共耗时:" + (end - start) + "毫秒"); } // 高效字节流一次读写一个字节数组:
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[];
int len = ;
while ((len = bis.read(bys)) != -) {
bos.write(bys, , len);
} bos.close();
bis.close();
} // 高效字节流一次读写一个字节:
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 by = ;
while ((by = bis.read()) != -) {
bos.write(by); } bos.close();
bis.close();
} // 基本字节流一次读写一个字节数组
public static void method2(String srcString, String destString)
throws IOException {
FileInputStream fis = new FileInputStream(srcString);
FileOutputStream fos = new FileOutputStream(destString); byte[] bys = new byte[];
int len = ;
while ((len = fis.read(bys)) != -) {
fos.write(bys, , len);
} fos.close();
fis.close();
} // 基本字节流一次读写一个字节
public static void method1(String srcString, String destString)
throws IOException {
FileInputStream fis = new FileInputStream(srcString);
FileOutputStream fos = new FileOutputStream(destString); int by = ;
while ((by = fis.read()) != -) {
fos.write(by);
} fos.close();
fis.close();
} }