BufferedInputStreamBufferedOutputStream分别使用内部字节数组(也称为缓冲区)来存储读写数据。 缓冲流通常比类似的非缓冲流更有效。

下面是一个演示如何使用BufferedInputStream的示例。

文件:BufferedInputStreamExample.java -

package com.yiibai.tutorial.io;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

/**
 * @author yiibai BufferedInputStreamExample.java Nov 5 2016
 */
public class BufferedInputStreamExample {
    public static void main(String[] args) {
        File file = new File("file.txt");
        FileInputStream fileInputStream = null;
        BufferedInputStream bufferedInputStream = null;

        try {
            fileInputStream = new FileInputStream(file);
            bufferedInputStream = new BufferedInputStream(fileInputStream);
            // Create buffer
            byte[] buffer = new byte[1024];
            int bytesRead = 0;
            while ((bytesRead = bufferedInputStream.read(buffer)) != -1) {
                System.out.println(new String(buffer 0 bytesRead));
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (fileInputStream != null) {
                    fileInputStream.close();
                }
                if (bufferedInputStream != null) {
                    bufferedInputStream.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }

        }
    }
}

执行上面示例代码,得到以下结果:

This is an example of reading data from file using BufferedInputStream.

以下是BufferedOutputStream的演示示例。

文件:BufferedOutputStreamExample.java -

package com.yiibai.tutorial.io;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * @author yiibai
 * BufferedOutputStreamExample.java
 * Nov 5, 2016
 */
public class BufferedOutputStreamExample {
    public static void main(String[] args) {
        File file=new File("outfile.txt");
        FileOutputStream fileOutputStream=null;
        BufferedOutputStream bufferedOutputStream=null;
        try {
            fileOutputStream=new FileOutputStream(file);
            bufferedOutputStream=new BufferedOutputStream(fileOutputStream);
            bufferedOutputStream.write("This is an example of writing data to a file".getBytes());
            bufferedOutputStream.write(" using BufferedOutputStream".getBytes());
            bufferedOutputStream.flush();

        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                if(fileOutputStream!=null){
                    fileOutputStream.close();
                }
                if(bufferedOutputStream!=null){
                    bufferedOutputStream.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

执行上面示例代码,得到以下结果:

This is an example of writing data to a file using BufferedOutputStream