文件和流
1.文件类java.io.File类
用于描述系统中文件或目录(文件夹),它仅仅是描述“文件”本书,不描述“文件”的内容
File类也允许描述一个虚拟的文件路径(file实例指向不存在的文件)
File类中的API
2.流 stream
控制二进制数据从一个介质转移到另一个介质的流转操作
流的分类
按照流向:输入流 输出流(针对内存以内存为角度来看待,也就是电信号)
按照处理单位来划分:字节流 字符流(以流的最小单位来划分)
按照功能进行划分:原始流 :提供最基础的流的功能
处理流 :从某个方面来加强原始流
处理流的构造方法的参数一定是另外一个流实例
基础父类 :
输入 输出
字节 inputstream outputstream
字符 reader writer
他们的子类以父类的名字为后缀
bufferoutputstream 字节输出流
=new bufferoutputstream(outputsteam out)//要处理的流
filereader 字符输入流
=new fileReader(File f)//不依赖于其他的流
2.文件流(原始流)
输入:将文件的内容读取到内存中
输出:将内存中的数据写入到文件中
fileinputstream 文件字节输入流
fileoutputstream 文件字节输出流
FileReader 文件字符输入流
缓冲流
提供了内部缓冲区提升了流的传输速度
同时也提供了一些加强流操作的API
buffered前缀
序列化
一种特殊的处理流,允许开发者直接将一个对象实例直接以二进制的方式直接序列化到其他介质中。
反序列化:将已经序列化的二进制数据反向从其他介质恢复到内存中。
步骤:1.可被序列化的类必须实现java.io.serializable接口
2.生成一个第一无二的序列码
如果需要序列化多个对象,可以将多个对象存入集合,将集合序列化
从内存中到磁盘的过程是序列化,从磁盘到内存是反序列化。对对象或者类都可以进行序列化。
FileOutputStream fos=new FileOutputStream(f);
ObjectOutputStream oss=new ObjectOutputStream(fos)//对对象的序列化
FileInputStream fis = new FileInputStream(“d:/employee.abc”);
ObjectInputStream ois = new ObjectInputStream(fis);
//反序列化
transient:被其修饰属性,不参与序列化