Java中的缓冲流、对象流

所有流的父类不外乎就是这4个类:

  • Inputstreaam
  • OutputStream
  • Reader
  • Writer

它们分别代表着字节输入流、字节输出流、字符输入流、字符输出流。

缓冲流

缓冲流属于高级流,它是在一种更高的层次对低级流进行的封装,FileInputStream 、FileOutputStream、FileReader 、FileWriter都属于低级流。

缓冲流的关键字眼是:Buffered,单词意思是“缓冲的”。缓冲流可以在流管道内增加缓存数据,让我们使用流读取字节或字符更加流畅和快捷。

它的作用相当于是加粗流管道,比如我们一边读取一边写入的时候,读取的字节如果供不应求,不仅会影响读取速度,可能还会出现其他的问题,尤其在读写网络数据时,网络可能随时发生拥塞,读取的字节很慢或不完整,这都不是我们想要的。

使用缓冲流理论上可以大大提供数据读写的性能。

缓冲流的构建:构造方法里的参数是一个低级流:

  • new BufferedInputStream(FileInputStream fis)
  • new BufferedOutputStream(FileOutputStream fos)
  • new BufferedReader(FileReader fr)
  • new BufferedWriter(FileWriter fw)

缓冲流的使用方式与低级流基本一致。

文件复制和加密使用BufferedInputStream和BufferedOutputStream性能会更高,尤其是大型的文件的读写。

读写文本文件通常使用BufferedReader和BufferedWriter会更好,不仅性能高,还具有读写一行的方法,非常方便。

  • BufferedReader
    String value = readLine();
  • BufferedWriter
    write(String)
    newLine()

对象流

我们可以使用对象流把对象写入到一个文件里,然后在需要的时候通过读取文件获取该对象,达到对象的持久化保存的目的。

使用对象流涉及到对象的序列化和反序列化的知识。

对象的序列化指的是:将一个完整的对象拆分成字节碎片 记录在文件中

对象的反序列化指的是:将文件中记录的对象, 反序列化组合成一个完整的对象

一个对象想要序列化到文件中,需要具备的条件:

  1. 实现Serializable接口,它是一个示意性接口,没有定义方法
  2. 为了让对象可以反序列化,需要在对象中添加一个属性:private long serialVersionUID = 任意值L;

总结

除了文件流、缓冲流、对象流、其他的流还包括:数组流、数据流、字符串流。
不过那些流都不太常用,了解一下即可。

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43598138/article/details/105726961