java.io.File类用于表示文件(目录)
File类只用于表示文件(目录)的信息(名称、大小等),不能用于文件内容的访问
IO流可以划分为输入流、输出流两类,也可以划分为字节流、字符流、序列化流三类
字节流
1)InputStream、OutputStream
1 | InputStream抽象了应用程序读取数据的方式 |
2)EOF = End 读到-1就读到结尾
3)输入流基本方法
1 | int b = in.read();读取一个字节无符号填充到int低八位.-1是 EOF |
4)输出流基本方法
1 | out.write(int b) 写出一个byte到流,b的低8位 |
5)FileInputStream—>具体实现了在文件上读取数据
6)FileOutputStream 实现了向文件中写出byte数据的方法
7)DataOutputStream、DataInputStream
1 | 对"流"功能的扩展,可以更加方面的读取int,long,字符等类型数据 |
8)BufferedInputStream、BufferedOutputStream
1 | 这两个流类位IO提供了带缓冲区的操作,一般打开文件进行写入 |
字符流
1) 编码问题
2)认识文本和文本文件
1 | java的文本(char)是16位无符号整数,是字符的unicode编码(双字节编码) |
3)字符流(Reader Writer)—->操作的是文本文本文件
1 | 字符的处理,一次处理一个字符 |
序列化流
基本类型序列化
1)将类型int 转换成4byte或将其他数据类型转换成byte的过程叫序列化
1 | 数据---->n byte |
2)反序列化
1 | 将n个byte 转换成一个数据的过程 |
3)RandomAccessFile
提供基本类型的读写方法,可以将基本类型数据序列化到文件或者将文件内容反序列化为数据
1 | 提供的对文件内容的访问,既可以读文件,也可以写文件。 |
对象序列化
1)对象序列化,就是将Object转换成byte序列,反之叫对象的反序列化
2)序列化流是过滤流
1 | 序列化流(ObjectOutputStream),----writeObject |
3)序列化接口(Serializable)
1 | 对象必须实现序列化接口 ,才能进行序列化,否则将出现异常 |
4)transient关键字
1 | private void writeObject(java.io.ObjectOutputStream s) |
5)序列化中子类和父类构造函数的调用问题