Android-IO流之缓冲字节流BufferedInputStream/BufferedOutputStream

目录

  1. BufferedInputStream/BufferedOutputStream
    --5.1 BufferedOutputStream 缓冲输出字节流
    --5.2 BufferedInputStream 缓冲输入字节流
    --5.3 使用BufferedInputStream和BufferedOutputStream进行拷贝

5.BufferedInputStream/BufferedOutputStream(需要flush()才可写入)

字节缓冲流(内置一个缓冲区(数组))
内存的运算效率比硬盘快很多,所以只有降低硬盘的读取次数才会提高效率。


Android-IO流之缓冲字节流BufferedInputStream/BufferedOutputStream_第1张图片

5.1 BufferedOutputStream

程序向流中写出字节时,不会直接写到文件中,会先写到缓冲区中,直到缓冲区写满,才会把缓冲区中的数据一次性写到文件中。

  1. BufferedOutputStream常用构造方法
public BufferedOutputStream(OutputStream out)

2.重要方法

public synchronized void write(int b)
public synchronized void write(byte b[], int off, int len)
public synchronized void flush() //用于刷新缓冲区,刷新后可再次读出,而close是关闭流释放资源了。

5.2 BufferedInputStream

程序读取字节时,BufferedInputStream一次性从文件中读取8192个字节存在缓冲区,程序读取时,不用找文件,直接从缓冲区中读取,直到缓冲区中的所有字节都被读取,再重新从文件中读取8192个字节。

  1. BufferedInputStream常用构造方法
public BufferedInputStream(InputStream in)

2.重要方法

public synchronized int read()
public synchronized int read(byte b[], int off, int len)

5.3 使用BufferedInputStream和BufferedOutputStream进行拷贝

File dir = Environment.getExternalStorageDirectory();
File file = new File(dir, "abc.txt");
File dst = new File(dir, "dst1.text");

FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis);

FileOutputStream fos = new FileOutputStream(dst);
BufferedOutputStream bos = new BufferedOutputStream(fos);

byte[] buffer = new byte[1024];
int len = -1;
while((len = bis.read(buffer))!=-1){
    bos.write(buffer,0,len);
 }
bis.close();
fis.close();
fos.close();
bos.close();

你可能感兴趣的:(Android-IO流之缓冲字节流BufferedInputStream/BufferedOutputStream)