数据流的划分

数据流不熟悉,各层流的包装常常把我弄糊涂,翻阅API也不是很方便理清其结构,所以总结一下基础知识点吧。

介绍

  • 数据流(Stream)是一组有顺序的、有起点和终点的字节集合,是对输入和输出的总称和抽象。

流的划分及简单描述

  • 数据流一般分为输入流(InputStream)输出流(OutputStream)
    输入流只能读不能写,而输出流只能写不能读。

  • Java主要定义了两种类型的流:字节流和字符流。
    字节流以字节为基本处理单位,字符流以字符为基本处理单位(采用统一的编码标准)。某些场合字符流比字节流更有效。

字节流

字节流在顶层有两个抽象类:InputStreamOutputStream,定义了所有关键字节流的关键方法。最重要的两种方法是read()write(),它们分别用于读和写字节。两种方法都在InputStreamOutputStream中被定义为抽象方法,它们被不同的子类重写,可应用于不同的场景。

  • 字节输入流
描述
InputStream 表示字节输入流的抽象类,是其他流的父类
FileInputStream 文件字节输入流
FilterInputStream 过滤字节输入流,提供拓展功能的输入流
BufferedInputStream 缓冲输入流,可以在其他的流的基础上构建缓存,是FilterInputStream的子类
DateInputStream 包含读取Java标准数据类型方法的输入流,是FilterInputStream的子类
ObjectInputStream 对象输入流,用于对象串行化
  • 字节输出流
描述
OutputStream 表示字节输出流的抽象类,是其他流的父类
FileOutputStream 文件字节输出流
FilterOutputStream 过滤字节输出流,提供拓展功能的输出流
BufferedOutputStream 缓冲输出流,可以在其他的流的基础上构建缓存,是FilterOutputStream的子类
DateOutputStream 包含读取Java标准数据类型方法的输出流,是FilterOutputStream的子类
PrintStream 打印流,包含print()println()的输出流,是标准输出流System.out使用的流
ObjectOutputStream 对象输出流,用于对象串行化

字符流

字符流在顶层有两个抽象类:ReaderWriter,定义了所有关键字符流的关键方法。最重要的两种方法是read()write(),它们分别进行字符数据的读和写。这些方法被不同的子类重写,可应用于不同的场景。

  • 字符输入流
描述
Reader 表示字符输入流的抽象类,是其他流的父类
BufferedReader 带缓冲功能的字符输入流
InputStreamReader 字节输入流向字符输入流转化的流
FileReader 文件字符输入流,是InputStreamReader的子类
  • 字符输出流
描述
Writer 描述字符输出流的抽象类,是其他流的父类
BufferedWriter 带缓冲功能的字符输出流
OutputStreamWriter 字节输出流向字符输出流转化的流
PrintWriter 打印字符输出流,类似PrintStream
FileWriter 文件字符输出流,是OutputStreamWriter的子类

字节流的使用

待续

字符流的使用

待续

串行化

待续

0%