含义
IO(Input/Output)流是用于处理输入和输出数据的机制,它提供了一种在程序和外部资源之间传输数据的方式
字节流
应用场景:操作二进制数据(音频、视频、图片)
bstract class InputStream -- 字节输入流的基类(抽象类)
abstract class OutputStream -- 字节输出流的基类(抽象类)class FileInputStream extends InputStream -- 文件字节输入流(是否追加)
class FileOutputStream extends OutputStream -- 文件字节输出流(是否追加)
class FilterInputStream extends InputStream -- 过滤器字节输入流
class FilterOutputStream extends OutputStream -- 过滤器字节输出流
class BufferedInputStream extends FilterInputStream -- 带缓冲区的字节输入流
class BufferedOutputStream extends FilterOutputStream -- 带缓冲区的字节输出流
字符流
应用场景:操作纯文本数据 注意:字符流 = 字节流+编译器
编译器:可以识别中文字符和非中文字符,非中文字符获取1个字节(一个字节=一个字符),编译器会根据编码格式获取中文字符对应的字节数(GBK获取两个字节,UTF-8获取三个字节)
abstract class Reader -- 字符输入流的基类(抽象类)
abstract class Writer -- 字符输出流的基类(抽象类)
class InputStreamReader extends Reader -- 字符输入转换流(可指定编码格式)
class OutputStreamWriter extends Writer -- 字符输出转换流(可指定编码格式)
特点:将字节流转换为字符流,字符转换流是字节流和字符流的桥梁
class FileReader extends InputStreamReader -- 文件字符输入流(可指定编码格式)(是否追加)
class FileWriter extends OutputStreamWriter -- 文件字符输出流(可指定编码格式)(是否追加)
class BufferedReader extends Reader -- 带有缓冲区的字符输入流
class BufferedWriter extends Writer -- 带有缓冲区的字符输出流
默认缓冲区大小:8192字符 -- new char[8192]
缓冲流
readLine(); -- 读取一行 newLine(); -- 新的一行
对象流
class ObjectInputStream -- 对象输入流
class ObjectOutputStream -- 对象输出流
理解:该流可以将对象写入文件,也可以读取文件中的对象 注意
写入数据后,打开文件你是看不懂的,这个不重要,重要的是取出来还能用
对象所属的类必须实现序列化接口 -- Serializable
Serializable接口,没有让我们实现任何的抽象方法,这种接口称之为标记型接口
添加序列化ID -- private static final long serialVersionUID = -6885984330342979506L;
transient修饰属性后,该属性不会随着对象而写入到文件
序列化/钝化:将程序中的对象写入到文件中
反序列化/活化:将文件中的对象读取到程序里