bufferedinputstream的使用

BufferedInputStream是一个带有缓冲区的输入流,通常使用它可以提高我们的读取效率,现在我们看下BufferedInputStream的实现原理: 
BufferedInputStream内部有一个缓冲区,默认大小为8M,每次调用read方法的时候,它首先尝试从缓冲区里读取数据,若读取失败(缓冲区无可读数据),则选择从物理数据源(譬如文件)读取新数据(这里会尝试尽可能读取多的字节)放入到缓冲区中,最后再将缓冲区中的内容部分或全部返回给用户.由于从缓冲区里读取数据远比直接从物理数据源(譬如文件)读取速度快,所以BufferedInputStream的效率很高!

******************************************************

不带缓冲的操作,每读一个字节就要写入一个字节,由于涉及磁盘的IO操作相比内存的操作要慢很多,所以不带缓冲的流效率很低。带缓冲的流,可以一次读很多字节,但不向磁盘中写入,只是先放到内存里。等凑够了缓冲区大小的时候一次性写入磁盘,这种方式可以减少磁盘操作次数,速度就会提高很多!这就是inputstream与bufferedinputstream的区别

时间: 2024-11-06 10:10:55

bufferedinputstream的使用的相关文章

理解IO流:InputStream和OutputStream,FileInputStream和FileOutputStream,Reader和Writer,FileReader和FileWriter,BufferedInputStream 和 BufferedOutputStream, BufferedReader 和 BufferedWriter,转换流

/* * 1.理解 "流" ? * 动态性.连续性.方向性. * * 2.在java语言中,将数据的输入/输出称之为 IO流. IO流的分类: * 1) 从方向分: 输入流 , 输出流. (参照计算机的内存) * 将数据送到内存中去称之为输入流.反之,称之为输出流. * * 2) 从处理单位来分: 字节流(8位二进制数据), 字符流(16位二进制数据). * * 3) 从是否有数据源来分: 节点流(有数据源), 处理流(必须套在节点流上). * * 3.在Java语言中,所有流类均来自

IO BufferedOutputStream和BufferedInputStream

BufferedOutputStream FileOutputStream的子类,该类实现缓冲的输出流.通过设置这种输出流,应用程序就可以将各个字节写入基础输出流中,而不必为每次字节写入调用基础系统. 字段 protected byte[] buf 存储数据的内部缓冲区. protected int count 缓冲区中的有效字节数. 构造函数 BufferedOutputStream(OutputStream out) 创建一个新的缓冲输出流,以将数据写入指定的基础输出流. BufferedO

BufferedInputStream类和BufferedOutputStream类

BufferedInputStream类 第一种方法: import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.IOException; public class IntegerDemo { public static void main(String[] args) throws IOException { FileInputStream fis = new FileInputStre

Java基础知识强化之IO流笔记28:BufferedOutputStream / BufferedInputStream(字节缓冲区流) 之BufferedOutputStream写出数据

1. BufferedOutputStream / BufferedInputStream(字节缓冲区流)的概述 通过定义数组的方式确实比以前一次读取一个字节的方式快很多,所以,看来有一个缓冲区还是非常好的.既然是这样的话,那么,java开始在设计的时候,它也考虑到了这个问题,就专门提供了带缓冲区的字节类.这种类被称为:缓冲区类(高效类) 写数据:BufferedOutputStream 读数据:BufferedInputStream 构造方法可以指定缓冲区的大小,但是我们一般用不上,因为默认缓

Java基础知识强化之IO流笔记29:BufferedOutputStream / BufferedInputStream(字节缓冲区流) 之BufferedInputStream读取数据

1. BufferedInputStream读取数据 BufferedInputStream构造方法,如下: 构造方法摘要 BufferedInputStream(InputStream in)           创建一个 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用. BufferedInputStream(InputStream in, int size)           创建具有指定缓冲区大小的 BufferedInputStream 并保存其参

BufferedInputStream 缓冲输入字节流 -------上

1 package com.BufferedInputStreamUse; 2 3 import java.io.BufferedInputStream; 4 import java.io.File; 5 import java.io.FileInputStream; 6 import java.io.FileNotFoundException; 7 import java.io.IOException; 8 9 /* 10 我们清楚读取文件数据使用缓冲数组读取效率更高,sun也知道使用缓冲数组

JDK之BufferedInputStream分析

最近写了一个下载文件的功能. 因为文件是在另一台服务器上面,所以要读取网络文件,需用到HttpURLConnection类. 先贴出来代码. import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import j

BufferedInputStream的理解.

BufferedInputStream 自带 8M 缓冲区, 我们自己又定义 byte[] buf = new byte[1024*1024]; 那 bis.read(buf) 就会去, 8M 缓冲区取数据, 读到自己的 1M 缓冲区, 直到碰到 bos.write(buf,0,len)  把1M缓冲区的数据 放到 另外一个输出流的 8M 缓冲区里, 输出流 满8M 就往外写东西,

BufferedInputStream和BufferedOutputStream详解

这两个类分别是FilterInputStream和FilterOutputStream的子类,作为装饰器子类,使用它们可以防止每次读取/发送数据时进行实际的写操作,代表着使用缓冲区. 了解这两个类之前,我们有必要知道不带缓冲的操作,每读一个字节就要写入一个字节,由于涉及磁盘的IO操作相比内存的操作要慢很多,所以不带缓冲的流效率很低.带缓冲的流,可以一次读很多字节,但不向磁盘中写入,只是先放到内存里.等凑够了缓冲区大小的时候一次性写入磁盘,这种方式可以减少磁盘操作次数,速度就会提高很多! 而Buf

BufferedInputStream源码常用部分分析

public BufferedInputStream(InputStream in) { this(in, DEFAULT_BUFFER_SIZE); } public BufferedInputStream(InputStream in, int size) { super(in); if (size <= 0) { throw new IllegalArgumentException("Buffer size <= 0"); } buf = new byte[size]