字节缓冲流(BufferedInputStream/BufferedOutputStream)
目的:为字节输入输出流提供缓冲功能,提高IO效率,减少访问磁盘次数;
字节输入缓冲流:字节缓冲类中有一个8k的缓冲区,磁盘把8k的数据放入缓冲区,如果一次读的内容小于8kb,则不用访问磁盘。flush可以将缓冲区的数据读取到内存。
字节输出缓冲流:内存不会直接写入磁盘。而是先写入8k到缓冲区,缓冲区满了之后再由缓冲区写入磁盘。flush可以将缓冲区的数据写入到磁盘。
关闭:字节缓冲流也需要关闭。
构造方法:
BufferedInputStream(InputStream in)
BufferedInputStream(InputStream in,int size)
BufferedOutputStream(OutputStream out)
BufferedOutputStream(OutputStream out,int size)
字节输入缓冲流:
package com.tiedandan.IO流.字节缓冲流;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class application {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("d:\\bbb.txt");
BufferedInputStream bis = new BufferedInputStream(fis);
// 读取,读取时不用在自己手动创建缓冲区 byte[] bytes =new byte[1024];
//
// int count = 0;
// while ((count=bis.read())!=-1){//用bis执行读方法效率比fis执行高
// System.out.print((char)count);
// }
//字节缓冲流默认的缓冲区是8k,也可以自己定义缓冲区
byte[] buf = new byte[1024];
int count1 = 0;
while ((count1= bis.read(buf))!=-1){
System.out.println(new String(buf,0,count1));
}
bis.close();//关闭缓冲流,传入缓冲流的字节流也会关闭。
}
}
字节输出缓冲流:
package com.tiedandan.IO流.字节缓冲流;
import java.io.BufferedOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* 字节输出缓冲流:内存不会直接写入磁盘。而是先写入8k到缓冲区.
* 缓冲区满了之后再由缓冲区写入磁盘。flush可以将缓冲区的数据写入到磁盘。
* 构造方法:
* BufferedOutputStream(OutputStream out)
* BufferedOutputStream(OutputStream out,int size)
*/
public class xieruapplication {
public static void main(String[] args) throws IOException {
FileOutputStream fos = new FileOutputStream("d:\\zhtt.txt");//创建字节写入(输出)流
BufferedOutputStream bos = new BufferedOutputStream(fos);//创建字节输出缓冲流
String a ="helloworld";
for (int i = 0; i <10 ; i++) {
bos.write(a.getBytes());//数据写入到缓冲区
bos.flush();//刷新到硬盘,不刷新数据就会存在缓冲区当中。
}
bos.close();
}
}