java 20 - 9 带有缓冲区的字节输出流和字节输入流

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 20 - 9 带有缓冲区的字节输出流和字节输入流相关的知识,希望对你有一定的参考价值。

由之前字节输入的两个方式,我们可以发现,通过定义数组读取数组的方式比一个个字节读取的方式快得多。

所以,java就专门提供了带有缓冲区的字节类:

缓冲区类(高效类)

写数据:BufferedOutputStream

    构造方法:

      BufferedInputStream(InputStream in) 创建一个 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。

      BufferedInputStream(InputStream in, int size) 创建具有指定缓冲区大小的 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。
读数据:BufferedInputStream

    构造方法:

      BufferedOutputStream(OutputStream out) 创建一个新的缓冲输出流,以将数据写入指定的底层输出流。

      BufferedOutputStream(OutputStream out, int size) 创建一个新的缓冲输出流,以将具有指定缓冲区大小的数据写入指定的底层输出流。

 

疑惑:

  例如:BufferedOutputStream(OutputStream out)
      为什么不传递一个具体的文件或者文件路径,而是传递一个OutputStream对象呢?
原因:

  字节缓冲区流仅仅提供缓冲区,为高效而设计的。但是呢,真正的读写操作还得靠基本的流对象实现。
 例子:  BufferedOutputStream:相当于水杯
      OutputStream:相当于水,解渴还得靠水

 

创建高效字节输出流对象,并输入数据

BufferedOutputStream out = new BufferedOutputStream(
                new FileOutputStream("c.txt"));

  // 输出数据
  out.write("javaIO".getBytes());

  out.close();

创建高校字节输入流对象,并输出数据

BufferedInputStream bis = new BufferedInputStream(new FileInputStream(
                "bos.txt"));

byte[] bys = new byte[1024];
int len = 0;
while ((len = bis.read(bys)) != -1) {
System.out.print(new String(bys, 0, len));
}

// 释放资源
bis.close();

 

以上是关于java 20 - 9 带有缓冲区的字节输出流和字节输入流的主要内容,如果未能解决你的问题,请参考以下文章

java.IO输入输出流:过滤流:buffer流和data流

Java学习笔记6.2.2 字符流 - 字节字符转换流

Java学习笔记6.2.2 字符流 - 字节字符转换流

day20 文件输入流和输出流FileInputStream FileOutputStream

Java中的字节输入出流和字符输入输出流

JavaSE基础九----<IO流 >流的体系和分类,字节流,字节缓冲流