Java字节输入输出流、字节缓冲输入输出流读写(复制)的区别
2021/5/31 22:20:49
本文主要是介绍Java字节输入输出流、字节缓冲输入输出流读写(复制)的区别,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
输入输出流
字节输出输出流
Java中使用两个类FileInputStream、FileOutputStream以及它们对应的方法来实现对文件的读写操作
字节缓冲输入输出流
字节缓冲输入输出流的两个类BufferedInputStream、BufferedOutputStream实现了对FileInputStream、FileOutputStream两个类的优化:在程序运行时添加了一个缓冲区,随后才调用计算机底层的程序来完成程序的执行
区别
我们使用一个音频文件(66M大小)来演示一个字节输出输出流和字节缓冲输入输出流读写文件的速度
code
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两个类的优化
这篇关于Java字节输入输出流、字节缓冲输入输出流读写(复制)的区别的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26消息中间件源码剖析教程
- 2024-11-26JAVA语音识别项目资料的收集与应用
- 2024-11-26Java语音识别项目资料:入门级教程与实战指南
- 2024-11-26SpringAI:Java 开发的智能新利器
- 2024-11-26Java云原生资料:新手入门教程与实战指南
- 2024-11-26JAVA云原生资料入门教程
- 2024-11-26Mybatis官方生成器资料详解与应用教程
- 2024-11-26Mybatis一级缓存资料详解与实战教程
- 2024-11-26Mybatis一级缓存资料详解:新手快速入门
- 2024-11-26SpringBoot3+JDK17搭建后端资料详尽教程