1.IO流概念
io流可以理解为文件传输的一个通道。I 和 O分别代表输入(Input)和输出(Output)。
把内存中的数据存储到持久化设备上这个动作称为输出(写)Output操作。把持久设备上的数据读取到内存中的这个动作称为输入(读)Input操作。这种输入和输出动作称为IO操作。其中用到的流对象称为IO流。
2.IO流分类
操作字节文件的输入流和输出流分别以InputStream和OutPutStream作为基本流;操作字符的输入流和输出流分别是以Reader和Writer作为基本流。
3.Propeties类
Properties集合是Hashtable集合的子类,也是唯一一个能和IO流直接结合使用的集合类。
A: Properties集合的特点
* a: Properties类介绍
* Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串
* b: 特点
* Hashtable的子类,map集合中的方法都可以用。
* 该集合没有泛型。键值都是字符串。
* 它是一个可以持久化的属性集。键值可以存储到集合中,也可以存储到持久化的设备(硬盘、U盘、光盘)上。键值的来源也可以是持久化的设备。
* 有和流技术相结合的方法。
* c: 方法介绍
* load(InputStream inputStream) 把指定流所对应的文件中的数据,读取出来,保存到Propertie集合中
* load(Reader reader) 按简单的面向型的格式从输入字符流中读取属性列表(键和元素对)
* store(OutputStream outputStream,String commonts) 把集合中的数据,保存到指定的流所对应的文件中,参数commonts代表对描述信息
* stroe(Writer writer,String comments) 以适合使用 load(Reader) 方法的格式,将此 Properties 表中的属性列表(键和元素对)写入输出字符
4.序列化和反序列化
4.1概念
序列化:把java对象转成字节序列的过程(相当于java源文件编译成为字节码文件)。
反序列化:把字节序列恢复为java对象的过程(将文件从磁盘中读取到内存中)。
4.2用途
1.将对象的字节码文件永久地保存在磁盘中。对象中的数据,以流的形式,写入到文件中保存过程称为写出对象。
2.在网络中进行字节码文件的传输。在文件中,以流的形式,将对象读出来,读取对象
4.3需要的技术
ObjectOutputStream将对象写进文件中,实现序列化。
ObjectInputStream 将文件对象读取出来,实现反序列化。
注意:需要序列化的类必须实现Serializable接口。该接口中没有任何方法,知识作为一个标识,被该接口标识的类,代表可以被序列化。
transient关键字:静态成员是不能被序列化和反序列化的,但是有些时候我们会有这样的需求;非静态的成员也不想被序列化或者反序列化,那该怎么办呢?针对这种情况,我们可以通过transient关键字解决。被transient修饰的属性不能被序列化,transient关键字只能修饰成员变量。