3

《JAVA300集》IO流_处理流-day17

 3 years ago
source link: https://blog.csdn.net/Amigo_1997/article/details/111643073
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

《JAVA300集》IO流_处理流-day17

目录

节点流和处理流的总述

字节缓冲流

字符缓冲流

转换流

数据流

对象流

打印流


节点流和处理流的总述

  • 节点流:可以从或向一个特定的地方(节点)读写数据。如FileReader.
  • 处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。所有处理流的最底层都是节点流。一个流对象经过其他流的多次包装,称为流的链接

JAVA常用的节点流:  

  • 文 件     FileInputStream / FileOutputStrean / FileReader / FileWriter 文件进行处理的节点流。
  • 字符串  StringReader / StringWriter 对字符串进行处理的节点流。
  • 数 组     ByteArrayInputStream / ByteArrayOutputStream / CharArrayReader / CharArrayWriter 对数组进行处理的节点流(对应的是内存中的一个数组)。
  • 管 道     PipedInputStream / PipedOutputStream / PipedReader / PipedWriter对管道进行处理的节点流。

常用处理流(关闭处理流使用关闭里面的节点流)

  • 缓冲流:BufferedInputStrean / BufferedOutputStream / BufferedReader / BufferedWriter -Buffered 增加缓冲功能,避免频繁读写硬盘
  • 转换流:InputStreamReader / OutputStreamReader -实现字节流和字符流之间的转换。
  • 数据流:DataInputStream / DataOutputStream -提供将基础数据类型写入到文件/内存数组中,或者读取。保留了数据和数据类型。
  • 对象流:ObjectInputStream / ObjectOutputStream -除了能处理基本数据和字符串外,还包括各种对象,用法类似数据流

流的关闭顺序:

  1. 一般情况下是:先打开的后关闭,后打开的先关闭
  2. 对于有依赖关系的流:如果流a依赖流b,应该先关闭流a,再关闭流b。例如,处理流a依赖节点流b,应该先关闭处理流a,再关闭节点流b
  3. 可以只关闭处理流,不用关闭节点流。因为处理流关闭的时候,会调用其处理的节点流的关闭方法。

字节缓冲流

字节缓冲流可以提高读写操作的效率,可以减少硬盘的读写时间,默认的缓冲区大小是8K。

字符缓冲流

InputStreamReader:从字节流转换为字符流,读取字节,使用指定的charset将其解码为字符。为了效率,通常会包装在BufferedReader里面。

OutputStreamReader:从字符流转换为字节流,为了效率,通常会包装在BufferedWriter里面。

运行效果:

数据流提供将基础数据类型写入到文件/内存数组中,或者读取。保留了数据和数据类型

运行结果:

对象流除了能处理基本数据和字符串外,还包括各种对象,用法类似数据流,将对象转换成二进制数据流

通过ObjectOutputStream,Object转换为Stream of bytes,称为序列化;反过来的过程,称为反序列化。

注:只有有标识的对象,才可以序列化。

如果序列化的 JDK 版本和反序列化的 JDK 版本不统一,则可能造成异常。因此在序列化操作中引入了一个serialVersionUID 的常量来验证版本的一致性。

运行结果:

补充小知识点:

transient表示该数据不需要序列化           

PrintStream,作用可以简化代码


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK