JAVA基础语法--BufferedInputStream和BufferOutputStream
学习笔记,仅供参考,有错必纠
BufferedInputStream和BufferOutputStream
BufferedInputStream
BufferedInputStream
为另一个输入流添加一些功能,即缓冲输入以及支持 mark
和 reset
方法的能力。在创建 BufferedInputStream
时,会创建一个内部缓冲区数组。在读取或跳过流中的字节时,可根据需要从包含的输入流再次填充该内部缓冲区,一次填充多个字节。mark
操作记录输入流中的某个点,reset
操作使得在从包含的输入流中获取新字节之前,再次读取自最后一次 mark
操作后读取的所有字节。
BufferedInputStream读取文件速度比FileInputStream要快,这是因为BufferedInputStream内置了一个缓冲区(数组),BufferedInputStream会一次性从文件中读取8192个字节, 存在缓冲区中, 程序可以直接从缓冲区中逐个获取字节,而不是从硬盘上的文件中逐个获取字节,当缓冲区中所有的数据都被获取, BufferedInputStream才重新从文件中读取8192个字节。
构造方法
BufferedInputStream(InputStream in)
创建一个 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。
BufferedInputStream(InputStream in, int size)
创建具有指定缓冲区大小的BufferedInputStream并保存其参数,即输入流 in,以便将来使用。
BufferOutputStream
BufferedOutputStream也内置了一个缓冲区(数组),程序向流中写出字节时, 不会直接写到文件中, 而是先逐个字节的写到缓冲区中,直到缓冲区写满, BufferedOutputStream才会把缓冲区中的数据一次性写到文件里。
构造方法
BufferedOutputStream(OutputStream out)
创建一个新的缓冲输出流,以将数据写入指定的底层输出流。
BufferedOutputStream(OutputStream out, int size)
创建一个新的缓冲输出流,以将具有指定缓冲区大小的数据写入指定的底层输出流。
举个例子
package com.guiyang.bean;
import java.awt.image.BufferedImage;
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 {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("beiyesi.png");
FileOutputStream fos = new FileOutputStream("copy.png");
BufferedInputStream bis = new BufferedInputStream(fis);
BufferedOutputStream bos = new BufferedOutputStream(fos);
int num;
while ((num = bis.read()) != -1) {
bos.write(num);
}
bos.close();
bis.close();
}
}
本文地址:https://blog.csdn.net/m0_37422217/article/details/107482210
上一篇: javaSE 阶段 题目
下一篇: Java中为什么String不可变