10.19-IO流

流根据功能可以划分为输入流与输出流

输入流:用于读取数据

输出流:用于写出数据

输入输出流的参照对象是基于我们的程序而言的

流的划分

基于处理单位

  • 字节流:以字节为单位读写数据

  • 字符流:以字符为单位读写数据

基于级别

  • 高级流:不能独立的存在,必须基于另外一个流工作

  • 低级流:数据有明确的来源或去向

字节输入输出流的父类

  • InputStream 字节输入流的父类

  • OutputStream 字节输出流的父类

FIS/FOS 用于读写文件的流

FileInputStream:文件字节输入流

例子-FileInputStream

FileOutputStream:文件字节输出流

例子-FileOutputStream

例子-注意事项

BIS/BOS 高级流

BufferedInputStream : 缓存字节输入流

BufferedOutputSteam :缓存字节输出流

高级流:会带一些额外的功能

例子-BufferedOutputSteam

DIS/DOS 高级流

DataInputStream:可以方便读取基本类型的数据

DataOutputStream:可以方便写出基本类型数据

例子-DataOutputStream

例子-DataInputStream

例子-高级流叠加使用

字符流

Reader:所有字符输入流的父类

Writer:所有字符输出流的父类

字符流的处理单位为字符,一次处理一个字符,字符流的底层本质上还是使用的读写字节

ISR/OSW

例子-字符输出

例子-字符输入

例子-给定字符集输出

例子-给定字符集输入

BR/BW

可以按行读取字符串

  • BufferedReader 缓存字符输入流

  • BufferedWriter 缓存字符输出流

例子-缓存字符输出

例子-缓存字符输入

PrintWriter

带自动行刷新的缓存字符输出流

构造器

  • PrintWriter(File file)

  • PrintWriter(String fileName)

  • PrintWriter(OutputStream out)

  • PrintWriter(Writer out)

例子-普通有参构造器

例子-自动缓存刷新

例子-叠加流

对象的序列化/反序列化流

  • ObjectInputStream 对象的反序列化流

  • ObjectOutputStream 对象的序列化流

通常我们序列化对象的目的是用于保存对象和传输对象

例子-序列化与反序列化

首先创建Person类

再创建测试类

测试类2

最后更新于