| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx

java中BufferedInputStream and BufferedOutputStream

0
Java 缓存 C/C++ 7864 次浏览
FileInputStream和FileOutputStream 在使用时,我们介绍了可以用byte

数组作为数据读入的缓存区,以读文件为列,读取硬盘的速度远远低于读

取内存的数据,为了减少对硬盘的读取,通常从文件中一次读取一定长度

的数据,把数据存入缓存中,在写入的时候也是一次写入一定长度的数据

,这样可以增加文件的读取效率。太原维信科技

我们在使用FileInputStream的时候是用byte数组来做了缓存,而

BufferedInputStream  and BufferedOutputStream已经为我们增加了这

个缓存功能。太原维信科技

在创建BufferedInputStream  实例时(BufferedOutputStream同上),

需要先给定一个InputStream类型的实例(如:FileInputStream)。

解释BufferedInputStream实现流程:其实质是实现了一个缓存装置,在

读取源数据的时候其实还是用的InputStream来实现的。只是在读取之前

给他们加了一个缓存区而已。

注意这个缓存区默认是位数组,大小2048,当读文件的时候,

BufferedInputStream会首先填满缓存区,然后在使用InputStream的

read()方法的时候,把缓存数组中的数据在读到目的地。太原维信科技

对BufferedOutputStream,有一个默认512字节的缓存数组,当使用

write()方法写数据时,实质上是先将数据写至缓存中,当缓存满时,在

用write()方法把数据写入。  太原维信科技

public static void main(String[] args) throws IOException {

byte[] buffer = new byte[1]; //创建一个数值,用来放从缓存数组中

读取出来的数据

BufferedInputStream bi = new BufferedInputStream(new 

FileInputStream("d:\\1.txt"));

BufferedOutputStream bo = new BufferedOutputStream(new 

FileOutputStream("d:\\2.txt"));

while(bi.read(buffer)!=-1){//如果有数据,则从默认的缓存中读出来

,这里注意:默认缓存是BufferedInputStream已经填加进去的,buffer

是我们从2048字节的缓存中读出数据,然后写数据

bo.write(buffer);//写入文本

}

bo.flush();//确保数据全部写入文本,则要刷新一下缓存

}

   //关闭流

2个答案

0

Input Stream is a simple library for making streams of data. It is mainly focused on supporting the java.util.InputStream and classes. As medical dissertation help said It is useful when you want to quickly write something without the need of creating your own classes.

0