java学习(六)之属性/缓冲流

写在前面

今天跑去折腾机器学习的环境了,就没有学多少东西,晚上这一个多小时看了点视频,在这也记录一下吧,冒充自己学习了,给自己点心理安慰
在这里插入图片描述

今日学习

属性集合

java.io.Properties extends java.util.Hashtable<K,V> implements java.util.Map<K,V>
是唯一一个与IO流结合的集合,具有持久属性,可保存在六种或从流中加载,属性列表中每个键和对应的值都是字符串,是双列集合。

  1. 构造方法
    Properties prop = new Properties();
  2. 方法
    1. Object setProperty(String key, String value);添加键值对,调用了Hashtableput方法

    2. String getProperty(String key);根据键获取对应的值,相当于Mapget()方法

    3. Set<String> stringPropertyNames();获取属性列表的键集,相当于MapketSet()方法

    4. void store(OutputStream out, String comments);/void store(Writer rt, , String comments);将集合中的临时数据持久化写入到硬盘中存储
      其中OutputStream代表字节输出流,不可写入中文;Writer代表字符输出流,可写入中文
      comments表示注释,用来解释说明保存的文件是干什么用的,不能用中文,一般用空字符串
      使用步骤:

      1. 创建Properties对象
      2. 创建字节/字符输出流,构造方法中传递写入数据的目的地
      3. 调用Properties对象的store()方法
      4. 调用close()方法关闭输出流(匿名对象自己就关了,不需要关闭资源这一步)
    5. void load(InputStream is);/void load(Reader r);将硬盘中保存的键值对文件数据,读取到集合中
      其中InputStream代表字节输入流,不可读取中文;Reader代表字符输入流,可读取中文

      注意:
      1. 存储键值对的文件,键与值默认连接符号:=空格其他符号
      2. 可以使用#注释
      3. 文件中默认为字符串,所以不需要加引号

      使用步骤:
      5. 创建Properties对象
      6. 创建字节/字符输入流,构造方法中传递读取数据的数据源
      7. 调用Properties对象的load()方法
      8. 调用close()方法关闭输出流(匿名对象自己就关了,不需要关闭资源这一步)
      9. 遍历Properties对象

缓冲流

基本流的一个增强(即给基本流增加一个缓冲区),提高基本流的效率

字节缓冲流BufferedOutputStreamBufferedInputStream
字符缓冲流BufferedWriterBufferedReader

字节输出缓冲流

java.io.BufferedOutputStream extends OutputStream

  1. 构造方法
    • BufferedOutputStream(OutputStream out);创建字节输出缓冲流,将数据写入指定的输出流中
    • BufferedOutputStream(OutputStream out, int size);创建字节输出缓冲流,将具有指定缓冲区大小的数据写入指定的输出流中
      注意:size是缓冲流内部缓冲区的大小
  2. 使用步骤
    1. 创建FileOutputStream对象,构造方法中传递写入数据的目的地
    2. 创建BufferedOutputStream对象,构造方法中传递FileOutputStream对象
    3. 调用BufferedOutputStream对象的write方法,将数据写入内部缓冲区中
    4. 调用BufferedOutputStream对象的flush方法,将缓冲区数据刷新到文件中
    5. 调用BufferedOutputStream对象的close方法,释放资源(先调用flush刷新数据,因此第4步可以省略)

字节输入缓冲流

java.io.BufferedInputStream extends InputStream

  1. 构造方法
    • BufferedInputStream(InputStream in);创建字节输入缓冲流,将数据读取到指定的输入流中
    • BufferedInputStream(InputStream in, int size);创建字节输入缓冲流,将具有指定缓冲区大小的数据读取到指定的输入流中
      注意:size是缓冲流内部缓冲区的大小
  2. 使用步骤
    1. 创建FileInputStream对象,构造方法中传递读取数据的数据源
    2. 创建BufferedInputStream对象,构造方法中传递FileInputStream对象
    3. 调用BufferedInputStream对象的read方法,将数据读取到内部缓冲区中
    4. 调用BufferedInputStream对象的close方法,释放资源(调用缓冲流的close方法可以直接将输入流也关闭

字符输出缓冲流

java.io.BufferedWriter extends Writer

  1. 构造方法
    • BufferedWriter (Writer w);创建字符输出缓冲流,将数据写入指定的输出流中
    • BufferedWriter (Writer w, int size);创建字符输出缓冲流,将具有指定缓冲区大小的数据写入指定的输出流中
      注意:size是缓冲流内部缓冲区的大小
  2. 特有成员方法
    void newLine()(;根据不同操作系统写入不同的换行分隔符
  3. 使用步骤
    1. 创建FileWriter对象,构造方法中传递写入数据的目的地
    2. 创建BufferedWriter对象,构造方法中传递FileWriter对象
    3. 调用BufferedWriter对象的write方法,将数据写入内部缓冲区中
    4. 调用BufferedWriter对象的flush方法,将缓冲区数据刷新到文件中
    5. 调用BufferedWriter对象的close方法,释放资源(先调用flush刷新数据,因此第4步可以省略)

字符输入缓冲流

java.io.BufferedReader extends Reader

  1. 构造方法
    • BufferedReader (Reader r);创建字符输入缓冲流,将数据读取到指定的输入流中
    • BufferedReader (Reader r, int size);创建字符输入缓冲流,将具有指定缓冲区大小的数据读取到指定的输入流中
      注意:size是缓冲流内部缓冲区的大小
  2. 特有的成员方法
    String readLine();读取一行数据,返回该行内容的字符串,不包含任何终止符;若读取到流末尾,则返回null
  3. 使用步骤
    1. 创建FileReader对象,构造方法中传递读取数据的数据源
    2. 创建BufferedReader对象,构造方法中传递FileReader对象
    3. 调用BufferedReader对象的read/readLine方法,将数据读取到内部缓冲区中
      注意:调用readLine()方法格式如下
      String str;
      while((str==br.reaadLine())!=null){
      	System.out.println(str);
      }
      
    4. 调用BufferedReader对象的close方法,释放资源(调用缓冲流的close方法可以直接将输入流也关闭

小知识点

Map<K,V>k有序,则会自动排序

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值