JAVA IO - Properties类的使用详解

1.了解一下什么是properties文件

*.properties 文件是一种常见的 key-value 格式的配置文件。
格式 : 键=值

  1. 键和值之间用=连接,不需要空格
  2. 值不需要用引号引起来,默认是String 类型
  3. 如果存在多个相同的key,则后面的值会覆盖前面的值

2.了解一下什么是Properties类

  1. Properties.javajava.util包下的一个工具类;

  2. Properties.javaHashTable的一个子类,所以它也是一个集合类。

  3. Properties.java 的主要使用的API方法有:
    load() : 加载properties文件到内存中
    list() : 指定输出位置,将properties文件中的内容输出出来
    getProperty(key): 根据key获取对应的值
    setProperty(): 设置Properties类的内容
    store(): 把Properties对象的内容持久化到文件中去

  4. 继承关系图如下 :

在这里插入图片描述

3.Properties类读取文件内容

3.1 properties文件

文件内容如下 :

name = 这是名称name
age=18
school_name=青岛大学
school_addr=山东省青岛市市南区
name=这是名称2

3.2 案例代码

package com.northcastle.properties_;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Properties;

/**
 * author : northcastle
 * createTime:2022/1/25
 * 读取 properties 文件案例
 */
public class PropertiesReadForCSDN {
    public static void main(String[] args) {

        //1.要读取的文件位置:绝对路径
        String filePath = "D:\\EDailyRoutine\\java-io-test\\properties_file.properties";
        //2.声明 字符输入流 对象
        FileReader fr = null;
        //3.声明 Properties 对象
        Properties propertiesObj = null;

        try {
            //4.实例化 字符输入流 对象
            fr = new FileReader(filePath);
            //5.实例化 Properties 对象
            propertiesObj = new Properties();
            //6.加载 properties 文件
            propertiesObj.load(fr);
            //7.把文件中的内容输出出来 ; 具体的输出位置由参数指定
            propertiesObj.list(System.out);
            System.out.println("==============================");
            //8.获取指定的值,默认所有的值都是String类型
            String name = propertiesObj.getProperty("name");
            System.out.println("name : -->"+name+"<--"); // 如果有重复的key的时候,后面的值会覆盖前面的值
            String age = propertiesObj.getProperty("age");
            System.out.println("age : "+age);
            String school_name = propertiesObj.getProperty("school_name");
            System.out.println("school_name : "+school_name);
            String school_addr = propertiesObj.getProperty("school_addr");
            System.out.println("school_addr : "+school_addr);


        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            //9.关闭流
            if (fr != null){
                try {
                    fr.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

3.3 执行结果

在这里插入图片描述

4.Properties类写内容到文件中

4.1 代码案例

package com.northcastle.properties_;

import java.io.*;
import java.util.Properties;

/**
 * author : northcastle
 * createTime:2022/1/25
 */
public class PropertiesWriterForCSDN {
    public static void main(String[] args) {
        //1.输出文件路径
        String filePath = "D:\\EDailyRoutine\\java-io-test\\properties_file02.properties";
        //2.声明 字符输出流对象
        FileWriter fr = null;
        //3.声明 Properties 对象
        Properties propertiesObj = null;

        try {
            //4.实例化 字符输出流对象
            fr = new FileWriter(filePath);
            //5.实例化 Properties 对象
            propertiesObj = new Properties();
            //6.赋值
            propertiesObj.setProperty("bookName","深入理解Java虚拟机");
            propertiesObj.setProperty("bookPrice","123.88");
            propertiesObj.setProperty("bookName","深入理解Java虚拟机(第三版)");
            propertiesObj.setProperty("bookAuthor","zhouzhi明");
            //7.持久化到文件中 : 第二个参数是备注信息,如果是中文,则在properties中是被转码的
            propertiesObj.store(fr,"这是一个备注信息");
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            //8.关闭字符输出流
            if (fr != null){
                try {
                    fr.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

4.2 执行结果

文件内容写入正常

在这里插入图片描述

5.完成

Congratulations!
You are one step closer to success!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值