I O

IO流

文件

  • 是保存数据的地方
  • 文件在程序中是以流的形式来操作的
    • 流:数据在数据源(文件)和程序(内存)之间经历的路径
    • 输入流:数据从数据源(文件)到程序(内存)的路径
    • 输出流:数据从程序(内存)到数据源(文件)的路径
  • 创建文件对象相关构造器和方法
    • 相关方法:
      • new File(String pathname) //根据路径构建一个File对象
      • new File(File parent,String child) //根据父目录文件+子路径构建
      • new File(String parent,String child) //根据父目录+子路径构建
    • createNewFile 创建新文件
  • 获取文件的相关信息:
    • getName,getAbsolutePath,getParent,length,exists,isFile,isDirectory
  • 目录的操作和文件的删除
    • mkdir创建一级目录,mkdirs创建多级目录,delete删除空目录或文件

IO流原理及流的分类

  • 流的分类:

    • 按操作数据单位不同分为:字节流(8 bit)二进制文件,字符流(按字符) 文本文件

    • 按数据流的流向不同分为:输入流,输出流

    • 按流的角色的不同分为:节点流,处理流/包装流

    • 字节流字符流
      输入流InputStreamReader
      输出流OutputStreamWriter
  • InputStream:字节输入流

    • InputStream 常用的子类:
      • FileInputStream:文件输入流
      • BufferedInputStream:缓冲字节输入流
      • ObjectInputStream:对象字节输入流
  • FileReader 和 FileWriter 介绍

    FileReader 和 FileWriter 是字符流,即按照字符来操作io

    • FileReader相关方法:
      • new FileReader(File/String)
      • read:每次读取单个字符,返回该字符,如果到文件末尾返回-1
      • read(char[]):批量读取多个字符到数组,返回读取到的字符数,如果到文件末尾返回-1
      • 相关API new String(char[]):将char[]转换成String
      • new String(char[],off,len):将char[]的指定部分转换成String
    • FileWriter常用方法
      • new FileWriter(File/String):覆盖模式,相当于流的指针在首端
      • new FileWriter(File/String,true):追加模式,相当于流的指针在尾端
      • write:写入单个字符
      • write(char[]):写入字符数组
      • write(char[],off,lenn):写入指定数组的指定部分
      • write(String):写入整个字符串
      • write(String,off,len):写入字符串的指定部分
      • toCharArray:将String转换成char[]
      • 注意:FileWriter使用后,必须要关闭(close)或刷新(flush),否则写入不到指定的文件
  • 序列化和反序列化

    • 序列化就是在保存数据时,保存数据的值数据类型
    • 反序列化就是在恢复数据时,恢复数据的值数据类型
    • 需要让某个对象支持序列化机制,则必须让其类时可序列化的该类必须实现如下两个接口之一:Serializable (一个标记接口,没有方法) 以及 Externalizable(该接口有方法需要实现,一般选前一个)
    • ObjectOutputStream 提供序列化功能
    • ObjectInputStream 提供 反序列化功能
  • 注意事项和细节说明

    • 读写顺序要一致
    • 要求实现序列化或反序列化对象需要Serializable
    • 序列化的类中建议添加SerivalVersionUID,为了提高版本的兼容性
    • 序列化对象时,默认将里面所有属性都进行序列化,除了static或transient修饰的成员
    • 序列化对象时,要求里面属性的类型也需要实现序列化接口
    • 序列化具备可继承性,也就是如果某类已经实现了序列化,则它的所有子类也已经默认实现了序列化
  • 转换流-InputStreamReader 和 OutputStreamWriter

    • InputStreamReader:Reader的子类,可以将InputStream(字节流)包装成(转换)Reader(字符流)
    • OutputStreamWriter:Writer的子类,实现将OutputStream(字节流)包装成Writer(字符流)
    • 放处理纯文本数据时,如果使用字符流效率更高,并且可以有效解决中文问题,所以建议将字节流转换成字符流
    • 可以在使用时指定编码格式(比如utf-8,gbk,等)
  • 打印流-PrintStream 和PrintWriter

  • Properties类

    • 专门用于读写配置文件的集合类

      配置文件的格式:

      键=值

    • 注意:键值对不需要有空格,值不需要用引号一起来。默认类型是String

    • 常见方法:

      • load:加载配置文件的键值对到Properties对象
      • list:将数据显示到指定设备
      • getProperty(key):根据键获取值
      • setProperty(key,value):设置键值对到Properties对象
      • store:将Properties中的键值对存储到配置文件中,在idea中,保存信息到配置文件中,如果含有中文,会存储为unicode码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值