Java BufferedInputStream 和 BufferedOutputStream

来源:互联网 发布:office mac 威锋 编辑:程序博客网 时间:2024/04/27 22:23

Java BufferedInputStream 和 BufferedOutputStream


带缓冲区的字节流

  • BufferedInputStream 和 BufferedOutputStream 默认有一个8192长度的字节数组缓冲区。
  • BufferedInputStream 在读取时,先一次性读取 8192 个字节到缓冲区,直到缓冲区内所有的数据都使用完,再去文件中读取。
  • BufferedOutputStream 是先将读取到的数据存储在缓冲区,缓冲区写满再一次性写到文件中。

  • BufferedInputStream

    • 构造方法
    构造方法 说明 BufferedInputStream(InputStream in) 创建一个 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用 BufferedInputStream(InputStream in, int size) 创建具有指定缓冲区大小的 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用
    • 方法
    方法 说明 available() 返回未读取的字节数 read(byte[] b, int off, int len) 从此字节输入流中给定偏移量处开始将各字节读取到指定的 byte 数组中 close() 关闭此输入流并释放与该流关联的所有系统资源
  • BufferedOutputStream

    • 构造方法
    构造方法 说明 BufferedOutputStream(OutputStream out) 创建一个新的缓冲输出流,以将数据写入指定的底层输出流 BufferedOutputStream(OutputStream out, int size) 创建一个新的缓冲输出流,以将具有指定缓冲区大小的数据写入指定的底层输出流
    • 方法
    方法 说明 flush() 刷新此缓冲的输出流。这迫使所有缓冲的输出字节被写出到底层输出流中 write(byte[] b, int off, int len) 将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此缓冲的输出流 write(int b) 将指定的字节写入此缓冲的输出流 close() 关闭流,在关闭之前会调用flush方法

文件拷贝示例

BufferedInputStream input = null;BufferedOutputStream output = null;try{    // 创建输入输出流    input = new BufferedInputStream(new FileInputStream("E:/apache-tomcat-8.5.9-windows-x64.zip"));    output = new BufferedOutputStream(new FileOutputStream("D:/temp.zip"));    byte[] buffer = new byte[1024 * 8];    int len;    // 读写数据    while((len = input.read(buffer)) > 0) {        output.write(buffer, 0, len);    }    // 刷新    output.flush();    System.out.println("Done.");}catch(IOException e) {    e.printStackTrace();}finally {    try {        // 关闭输入流        if(input != null) {            input.close();        }    } catch (IOException e) {        e.printStackTrace();    }finally {        try {            // 关闭输出流            if(output != null) {                output.close();            }        } catch (IOException e) {            e.printStackTrace();        }    }}
0 0
原创粉丝点击