IO流的概念
- IO就是Input和Output的简写,也就是输入和输出的含义。
- IO流就是指读写数据时像流水一样从一端流到另外一端,因此得名为“流”。
IO的分类
- 按照读写数据的基本单位不同,分为字节流和字符流。
其中字节流主要指以字节为单位进行数据读写的流,可以读写任意类型的文件。
其中字符流主要指以字符(2个字节)为单位进行数据读写的流,只能读写文本文件。
- 按照读写数据的方向不同,分为输入流和输出流(站在程序的角度)。
其中输入流主要指从文件中读取数据内容输入到程序中,也就是读文件。
其中输出流主要指将程序中的数据内容输出到文件中,也就是写文件。
- 按照流的角色不同分为节点流和处理流。
其中节点流主要指直接和输入输出源对接的流。
其中处理流主要指需要建立在节点流的基础之上的流。
IO体系结构
相关流讲解
FileWriter类
基本概念
FileReader类
基本概念
FileInputStream
基本概念
- java.io.FileInputStream类主要用于从输入流中以字节流的方式读取图像数据等。常用的方法
常用的方法
BufferedOutputStream
基本概念
- java.io.BufffferedOutputStream类主要用于描述缓冲输出流,此时不用为写入的每个字节调用底层
常用的方法
BufffferedInputStream类
基本概念
BufferedWriter
基本概念
java.io.BufffferedWriter类主要用于写入单个字符、字符数组以及字符串到输出流中。
常用方法
BufferedReader
基本概念
java.io.BufffferedReader类用于从输入流中读取单个字符、字符数组以及字符串。
常用方法
ObjectOutputStream
基本概念
java.io.ObjectOutputStream类主要用于将一个对象的所有内容整体写入到输出流中。
- 只能将支持 java.io.Serializable 接口的对象写入流中。
- 类通过实现 java.io.Serializable 接口以启用其序列化功能。
- 所谓序列化主要指将一个对象需要存储的相关信息有效组织成字节序列的转化过程。
常用的方法
ObjectInputStream
基本概念
特别讲解
序列化版本号
序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常(InvalidCastException)。
transient关键字
transient是Java语言的关键字,用来表示一个域不是该对象串行化的一部分。当一个对象被串行化的时候,transient型变量的值不包括在串行化的表示中,然而非transient型的变量是被包括进去的。
经验的分享
当希望将多个对象写入文件时,通常建议将多个对象放入一个集合中,然后将集合这个整体看做一个对象写入输出流中,此时只需要调用一次readObject
其他
快捷生成try catch finally使用 ctrl+alt+t