IO流
流只能单方向流动
输入流用来读取 → in
输出流用来写出 → out
数据只能从头到尾顺序的读写一次
IO流的继承结构
根据流的方法不同分为:
输入流和输出流
根据处理的数据单位不同分为:
字节流 : 针对二进制文件
字符流 : 针对文本文件,读写容易出现乱码的现象,在读写时,最好指定编码集为UTF-8
创建对象
File(String pathname)通过将给定路径名字符串转换为抽象路径名来创建一个新的File实例
new File(“d:/abc/a.txt”);
new File(“d:/abc”,”a.txt”);
常用方法
File f = new File(“d:/abc/a.txt”);
f.length() 字符数
f.exists() 是否存在
f.isFile() 是否是文件
f.isDirectory() 是否是文件夹
f.getName() 获得文件名
f.getParent() 获得父级目录
f.getAbsolutePath( )获得绝对路径
f.createNewFile( ) 创建文件
f.mkdir() 创建文件夹
f.mkdirs() 创建多个文件夹
f.delete() 删除空文件夹/文件
f.list() 文件列表
f.listFile( )
组合流
字节输入流:
InputStream 抽象类,不能new,可以作为超类,学习其所提供的共性方法
--FileInputStream 子类,操作文件的字节输入流,普通类
--BufferedInputStream 子类,缓冲字节输入流,普通类
4.字符输入流
Reader 抽象类,不能new,可以作为超类,学习其所提供的共性方法
--FileReader,子类,操作文件的字符输入流,普通类
--BufferedReader,子类,缓冲字符输入流,普通类
5.字节输出流:
OutputStream 抽象类,不能new,可以作为超类,学习其所提供的共性方法
--FileOutputStream 子类,操作文件的字节输出流,普通类
--BufferedOutputStream 子类,缓冲字节输出流,普通类
6.字符输出流
Writer 抽象类,不能new,可以作为超类,学习其所提供的共性方法
--FileWriter,子类,操作文件的字符输出流,普通类
--BufferedWriter,子类,缓冲字符输出流,普通类
序列化和反序列化
序列化:利用ObjectOutputStream,
把对象的信息,按照固定的格式转成一串字节值输出并持久保存到磁盘
反序列化:利用ObjectInputStream,
读取磁盘中之前序列化好的数据,重新恢复成对象
注意:
需要序列化的文件必须实现Serializable接口,用来启用序列化功能
不需要序列化的数据可以修饰成static,原因:static资源属于类资源,不随着对象被序列化输出
每一个被序列化的文件都有一个唯一的id,如果没有添加此id,编译器会自动根据类的定义信息计算产生一个
在反序列化时,如果和序列化的版本号不一致,无法完成反序列化
常用与服务器之间的数据传输,序列化成文件,反序列化读取数据