文件类

  • exists()  判断文件或者目录是否存在
  • isFile()  判断是否是文件
  • isDirectory()  判断是否是目录
  • getPath()  获取文件相对路径
  • getAbsolutePath()  获取文件绝对路径
  • getName()  获取文件名
  • length()  获取文件内容的字节长度
  • delete()  删除文件
  • createNewFile()  创建一个空的文件

字节输入流

  • 父类是InputStream
  • 子类FileInputStream
  • read()  方法从字节流中读取内容
  • available()  返回流中剩余的字节个数
  • close()  方法关闭文件流,释放资源

注意:使用子类去读写文件

操作文件流的步骤

  1. 引入相关的类
  2. 构造文件流对象,建立数据通道
  3. 读写文件
  4. 关闭流释放资源

字节输出流

  • 父类是OutputStream
  • 子类FileOutputStream
  • write()  方法将字节写入流中保存
  • flush()  方法关闭文件流,释放资源
  • close()  方法关闭文件流,释放资源

注意:当文件不存在会自动创建空文件,并写内容 ,如果希望写入的内容进行追加,需要在构造方法的时候添加true参数

FileOutputStream f2 = new FileOutputStream(file,true);

字符流操作

  • Reader 和 Writer 是父类
  • OutputStreamWriter 和 InputStreamWriter 是 Reader 和 Writer 是子类
  • FileWriter 和 是 FileReader 和 InputStreamWriter 是子类
  • write()  写入数据
  • close()  关闭流
  • BufferedWriter 和 BufferedReader是增强版的类,效率更高

注意:使用子类去读写文件

二进制文件的读写

  • 使用 DataInputStream 和 DataOutputStream 类
  • read()  读取二进制文件内容
  • write()  写入二进制文件内容
  • close()  关闭流

对象的序列化和反序列化

  • 使用 ObjectInputStream 和 ObjectOutputStream 类
  • 被序列化和反序列化的实体类,要实现Serializable接口
  • 想要序列化和反序列化多个对象,可以将他们塞入集合,再对集合进行序列化写入和反序列化读入

例如

list.add(dog1);
list.add(dog2);
list.add(dog3);
writeObject(list);