Java中使用两个类FileInputStream、FileOutputStream以及它们对应的方法来实现对文件的读写操作
字节缓冲输入输出流的两个类BufferedInputStream、BufferedOutputStream实现了对FileInputStream、FileOutputStream两个类的优化:在程序运行时添加了一个缓冲区,随后才调用计算机底层的程序来完成程序的执行
我们使用一个音频文件(66M大小)来演示一个字节输出输出流和字节缓冲输入输出流读写文件的速度
import java.io.*; /* 测试四种字节流读写视频的速度: 源文件:C:\Users\ShleyCpt\Desktop\java.mov -> 目标文件:D:\JetBrains\IDEA_Demo\idea_demo\java.mov 1、使用FileInputStream、FileOutputStream一次读写一个字节; 2、使用FileInputStream、FileOutputStream一次读写一个字节数组; 3、使用BufferedInputStream、BufferedOutputStream一次读写一个字节; 4、使用BufferedInputStream、BufferedOutputStream一次读写一个字节数组; */ public class Demo { public static void main(String[] args) throws IOException { // 获取开始时间 long startTime = System.currentTimeMillis(); method1(); // 用时391455毫秒 // method2(); // 用时631毫秒 // method3(); // 用时598毫秒 // method4(); // 用时111毫秒 // 获取结束时间 long endTime = System.currentTimeMillis(); System.out.println("耗费时间:" + (endTime - startTime) + "毫秒"); } // 使用FileInputStream、FileOutputStream一次读写一个字节 public static void method1() throws IOException { FileInputStream in = new FileInputStream("C:\\Users\\ShleyCpt\\Desktop\\java.mov"); FileOutputStream out = new FileOutputStream("D:\\JetBrains\\IDEA_Demo\\idea_demo\\java.mov"); int index; while ((index = in.read()) != -1) { out.write(index); } in.close(); out.close(); } // 使用FileInputStream、FileOutputStream一次读写一个字节数组 public static void method2() throws IOException { FileInputStream in = new FileInputStream("C:\\Users\\ShleyCpt\\Desktop\\java.mov"); FileOutputStream out = new FileOutputStream("D:\\JetBrains\\IDEA_Demo\\idea_demo\\java.mov"); byte[] bytes = new byte[1024]; int index; while ((index = in.read(bytes)) != -1) { out.write(bytes, 0, index); } in.close(); out.close(); } // 使用BufferedInputStream、BufferedOutputStream一次读写一个字节 public static void method3() throws IOException { BufferedInputStream bin = new BufferedInputStream(new FileInputStream("C:\\Users\\ShleyCpt\\Desktop\\java.mov")); BufferedOutputStream bout = new BufferedOutputStream(new FileOutputStream("D:\\JetBrains\\IDEA_Demo\\idea_demo\\java.mov")); int index; while ((index = bin.read()) != -1) { bout.write(index); } bin.close(); bout.close(); } // 使用BufferedInputStream、BufferedOutputStream一次读写一个字节数组 public static void method4() throws IOException { BufferedInputStream bin = new BufferedInputStream(new FileInputStream("C:\\Users\\ShleyCpt\\Desktop\\java.mov")); BufferedOutputStream bout = new BufferedOutputStream(new FileOutputStream("D:\\JetBrains\\IDEA_Demo\\idea_demo\\java.mov")); byte[] bytes = new byte[1024]; int index; while ((index = bin.read(bytes)) != -1) { bout.write(bytes, 0, index); } bin.close(); bout.close(); } }
字节缓冲输入输出流的两个类BufferedInputStream、BufferedOutputStream实现了对FileInputStream、FileOutputStream两个类的优化