Java_基础—BufferedInputStream和BufferOutputStream拷贝
程序员文章站
2024-03-04 20:48:36
...
图解BufferedInputStream和BufferedOutputStream的使用过程
package com.soar.stream;
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 Demo5_BufferCopy {
/*
*** A:缓冲思想
* 字节流一次读写一个数组的速度明显比一次读写一个字节的速度快很多,
* 这是加入了数组这样的缓冲区效果,java本身在设计的时候,
* 也考虑到了这样的设计思想(装饰设计模式后面讲解),所以提供了字节缓冲区流
*** B.BufferedInputStream
* BufferedInputStream内置了一个缓冲区(数组)
* 从BufferedInputStream中读取一个字节时
* BufferedInputStream会一次性从文件中读取8192个, 存在缓冲区中, 返回给程序一个
* 程序再次读取时, 就不用找文件了, 直接从缓冲区中获取
* 直到缓冲区中所有的都被使用过, 才重新从文件中读取8192个
*** C.BufferedOutputStream
* BufferedOutputStream也内置了一个缓冲区(数组)
* 程序向流中写出字节时, 不会直接写到文件, 先写到缓冲区中
* 直到缓冲区写满, BufferedOutputStream才会把缓冲区中的数据一次性写到文件里
*** D.小数组的读写和带Buffered的读取哪个更快?
* 定义小数组如果是8192个字节大小和Buffered比较的话
* 定义小数组会略胜一筹,因为读和写操作的是同一个数组
* 而Buffered操作的是两个数组
*/
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("SpeedDream.mp3"); //创建输入流对象,关联SpeedDream
FileOutputStream fos = new FileOutputStream("copy.mp3"); //创建输出流对象,关联copy.mp3
BufferedInputStream bis = new BufferedInputStream(fis); //创建缓冲区对象,对输入流进行包装让其变得更加强大
BufferedOutputStream bos = new BufferedOutputStream(fos); //创建缓冲区对象,对输出流进行包装让其变得更加强大
int b;
while((b = bis.read()) != -1){
bos.write(b);
}
bis.close();
bos.close();
}
}
推荐阅读
-
Java_基础—BufferedInputStream和BufferOutputStream拷贝
-
Python基础教程之浅拷贝和深拷贝实例详解
-
Python基础教程之浅拷贝和深拷贝实例详解
-
浅谈js基础数据类型和引用类型,深浅拷贝问题,以及内存分配问题
-
JAVA基础语法--BufferedInputStream和BufferOutputStream
-
JavaScript基础心法 深浅拷贝(浅拷贝和深拷贝)
-
集合和基础类型的填坑以及深浅拷贝
-
一文带你了解JavaScript基础之深拷贝和浅拷贝
-
浅谈js基础数据类型和引用类型,深浅拷贝问题,以及内存分配问题
-
JavaScript基础 详细解读浅拷贝和深拷贝之间的问题