欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JAVA基础语法--BufferedInputStream和BufferOutputStream

程序员文章站 2022-10-03 17:19:36
学习笔记,仅供参考,有错必纠BufferedInputStream和BufferOutputStreamBufferedInputStreamBufferedInputStream 为另一个输入流添加一些功能,即缓冲输入以及支持 mark 和 reset 方法的能力。在创建 BufferedInputStream 时,会创建一个内部缓冲区数组。在读取或跳过流中的字节时,可根据需要从包含的输入流再次填充该内部缓冲区,一次填充多个字节。mark 操作记录输入流中的某个点,reset 操作使得...

学习笔记,仅供参考,有错必纠



BufferedInputStream和BufferOutputStream


BufferedInputStream


BufferedInputStream 为另一个输入流添加一些功能,即缓冲输入以及支持 markreset 方法的能力。在创建 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

相关标签: JAVA