IO流

概述

流是有起点和终点的有序字节序列

目录

  • ​​IO流​​
  • ​​File类​​
  • ​​FileInputStream/FileOutputStream​​
  • ​​FileReader/FileWriter​​
  • ​​InputStreamReader/OutputStreamWrite​​
  • ​​BufferedReader/BufferedWriter​​
  • ​​ObjectInputStream/ObjectOutputStream​​
  • ​​PrintStream/PrintWriter​​

IO体系分类

javaSE-IO总汇_java

IO字符流体系结构

javaSE-IO总汇_字符流_02

IO字节流体系结构

javaSE-IO总汇_对象序列化_03

读写文件

javaSE-IO总汇_字节流_04

输入输出

javaSE-IO总汇_字节流_05

​​File类​​

读取文件内容使用IO流, 操作文件/文件夹使用File类, 如创建/遍历/删除文件夹, 查看文件的相关属性等操作

​​FileInputStream/FileOutputStream​​

以字节为单位读写文件内容

​​FileReader/FileWriter​​

以字符为单位读写文件内容

只能读写文本文件, 并且要求文本文件的编码格式与当前环境编码格式兼容

​​InputStreamReader/OutputStreamWrite​​

当文本文件编码与当前环境编码不兼容时, 使用这个转换流

InputStreamReader把字节流以指定的编码转换为字符流

OutputStreamWriter可以把字符转换为指定格式的字节流

​​BufferedReader/BufferedWriter​​

缓冲区工作

javaSE-IO总汇_对象序列化_06

javaSE-IO总汇_对象序列化_07

​​ObjectInputStream/ObjectOutputStream​​

对象序列化:

把对象转换为01二进制序列就是对象序列化

对象反序列化

把一组01二进制序列转换为对象


注意:


对象序列化/反序列化前提是对象的类要实现Serializable接口,该接口是一个标志性接口,没有任何方法

ObjectOutputStream类 可以把对象序列化,把序列化后二进制保存到文件中

ObjectInputStream类可以从文件读取01序列,把 这组01序列转换为对象(反序列化)

一般情况下, 类实现了Serializable接口后, 手动的添加一个序列化版本号字段:

private static final long serialversionUID = 2332956456465L;

​​PrintStream/PrintWriter​​

打印字节流/打印字符流