zoukankan      html  css  js  c++  java
  • java回顾之字符流

    java回顾之字符流

    一、字符流输入reader

    方法说明
    close() 关闭流资源
    read() 读取一个字符
    read(char[] chs) 读取一个字符数组的内容

    1.2、FileReader类

    方法说明
    FileReader(File file) 使用File对象的路径创建输入流
    FileReader(String fileName) 使用字符串路径创建输入流

    1.3、字符输出流Writer

    方法说明
    close() 关闭流资源
    flush() 刷新
    write(int c) 写出一个字符
    write(char[] cbuf) 写出一个字符数组的内容
    write(char[] b, int off, int len) 写出一个字符数组的一部分
    write(String str) 写出一个字符串

    1.4实现类 FileWriter类

    • 方法说明
      FileWriter(File file) 用File对象所表示的路径创建输出流对象
      FileWriter(String fileName) File字符串所表示的路径创建输出流对象
      FileWriter(File file,boolean b) 用File对象所表示的路径创建输出流对象,true表示续写
      FileWriter(String fileName,boolean b) File字符串所表示的路径创建输出流对象,true表示续写

    常用方法演示:

      关闭和刷新

        flush()方法作用是把在缓冲区中的内容刷新的文件中,刷新后可以继续使用流对象

        close()方法作用是关闭流资源,在关闭之前会自动把缓冲区内容刷新到文件中

      通常写法就不调用flush方法,只要在最后调用close就可以了
    特殊情况:
      比如要做聊天系统,每次说话对方都需要立马接受,不能最后一起刷新,所有需要使用flush方法

    1.5、字节流字符流的作用

    字节流能够操作任意类型,任意类型底层都是字节,比如图片,MP3, 视频
    字符流专门用来操作有中文的文本(只有文本才有字符的概念)

    二、IO资源的处理

    2.1、JDK7前处理  不断的try。。catch

    为什么要处理异常:
      IO流的操作本身就有出错的概率,这是无法解决的。
      以前throws的意思是如果出错就不管了,这是一个不负责的处理方式
      现在使用try..catch的意思是如果出错了,我们就尽量把损失降到最低,开过流要关掉

    例子:
      买保险。买完保险之后一个人出事的概率并不会降低
      当出事之后损失要降到最低。

    2.2、JDK7的处理

    格式:

        try(创建流对象;创建流对象){
                IO流操作
            }catch(){
        
        }               
    不需要程序员自己关流了,系统内部实现关流步骤,这种模式可以关好多,比如池子 

    三、Properties类

    3.1、概述

    Properties叫做是属性集。其实他是Hashtable的一个子类,所以Properties也是一个双列集合。

    Properties有和IO流相关的方法。

    Properties键值对都保存字符串,所以这个集合不写泛型。

    3.2、构造方法

    方法说明
    public Properties() 创建一个空的属性列表。
    方法说明
    Object setProperty(String key ,String value) 添加键值对
    String getProperty(String key) 根据键获取值
    stringPropertyNames() 获取所有的键
    load(输入流) 把文件中的键值对数据读到集合中
    store(输出流,String comments) 把集合中的键值对保存到文件中

      把数据保存到文件中(写出)

    public class Demo03 {
        public static void main(String[] args) throws IOException {
    
            //创建对象
            Properties p = new Properties();
    
            //添加键值对
            p.setProperty("柳岩", "大鹏");
            p.setProperty("赵敏", "张无忌");
    
            //store()把集合中的键值对保存到文件中
            p.store(new FileWriter("day16\aaa\123.txt"),"....");
        }
    }
    

      把数据加载到集合里(读取)

    public class Demo04 {
        public static void main(String[] args) throws IOException {
    
            //创建对象
            Properties p = new Properties();
    
            System.out.println("读取前" + p);
    
            //把文件中的数据读取到集合中
            p.load(new FileReader("day16\aaa\aaa.properties"));
    
            System.out.println("读取后" + p);
        }
    }
    

     这种思想,在开发中很有用,可以实现解耦合,在不修改源代码的情况下,做出修改数值的操作。

    四、ResourceBundle工具类

    能够更方便的读取文件。Properties的load方法的。

    但是使用这个工具类有前提条件:

    1.文件需要是properties类型

    2.文件需要保存在src路径下

    public class Demo05 {
        public static void main(String[] args) {
    //        ResourceBundle
    
            //获取对象
            //参数表示文件名
            ResourceBundle bundle = ResourceBundle.getBundle("aaa");
    
    
            //根据键获取值
            String s = bundle.getString("zhangsan");
            System.out.println(s);
            String s2 = bundle.getString("liuyan");
            System.out.println(s2);
    
    
            //System.out.println(bundle);
    
            //ResourceBundle没有特别的好处,就代码看起来简单。但是必须满足前提条件
        }
    }
    

      

  • 相关阅读:
    day06.2-软链接与硬链接
    day06.1-磁盘管理
    day05.3-Linux进程管理
    day05.2-Vim编辑器
    day05.1-文件归档与压缩
    day04-Linux系统中用户控制及文件权限管理方法
    day03-Linux操作系统目录结构
    day02.2-常用Linux命令整理
    BST_traverse(中序遍历,前序遍历,后序遍历)
    JS_DOM_practice with Pokemon
  • 原文地址:https://www.cnblogs.com/gushiye/p/13861046.html
Copyright © 2011-2022 走看看