Java基础IO篇--Properties类

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: Java基础IO篇--Properties类

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第2天,点击查看活动详情

前言

在日常的开发中,为了增加系统的灵活性和拓展性,我们会把一些经常变动的参数配置抽离出来,放在配置文件中,在项目启动时,灵活的选择需要加载的参数。常见的配置文件形式有Properties类、XML文件和YAML文件。下面我们将介绍一下Properties类,xml和yaml文件后续会陆续介绍的。

一、Properties类的概述

java.util.Properties,底层是一个Map结构,继承于HashTable ,主要用来表示一个持久的属性集。它使用键值结构存储数据,每个键及其对应值都是一个字符串。该类也被许多Java类使用,比如获取系统属性时,System.getProperties 方法就是返回一个Properties对象。 更多时候用于读取配置文件

二、Properties类构造方法

Properties(): 没有默认值的空属性列表。  

三、Properties类基本存取功能方法

  • public Object setProperty(String key, String value):存一对属性,等价于map.put(key,value);
  • public String getProperty(String key): 使用此属性列表中指定的键搜索属性值,等价于map.get(key);
  • public Set<String> stringPropertyNames():所有键的名称的集合,等价于map.keySet();
public class Test {
    public static void main(String[] args) {
        // 创建Properties类的对象
        Properties pp = new Properties();
        // 存数据
        pp.setProperty("driverClass", "com.mysql.jdbc.Driver");
        pp.setProperty("url", "http://localhost:3306/day11_db");
        pp.setProperty("username", "root");
        pp.setProperty("password", "root");
        // 取数据(所有的key)
        Set<String> set = pp.stringPropertyNames();
        // 非空判断
        if (!set.isEmpty()) {
            // 遍历
            for (String key : set) {
                System.out.println("key:" + key + ", value:" + pp.getProperty(key));
            }
        }
    }
}

四、Properties类读取配置文件

Properties类除了能够当做Map使用,还可以与文件(可以是txt文件、可以是properties)进行关联,获得文件里面的数据!

  • void load(InputStream inStream):从输入字节流读取属性列表(键和元素对)。
***要求:将文件放在src目录(类的根路径)下面!***
#资源文件fis.properties内容:
driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/day11_db
password=root
username=root
/*
读取配置文件(text类型的)
*/
public class Test {
    public static void main(String[] args) {
        // 创建Properties类的对象
        Properties prop = new Properties();
        // 创建资源文件对应的字节输入流
        try (
                //FileInputStream fis = new FileInputStream("day11_io/src/fis.txt");
                FileInputStream fis = new FileInputStream("day11_io/src/fis.properties");
        ) {
            // 让文件对应的的输入流与prop关联
            prop.load(fis);
            // 获得所有的key
            Set<String> set = prop.stringPropertyNames();
            // 判断
            if (!set.isEmpty()) {
                // 遍历
                for (String key : set) {
                    // 获得值
                    String value = prop.getProperty(key);
                    // 打印输出
                    System.out.println(key + "对应的值是:" + value);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

扩展:使用ResourceBundle类读取properties配置文件

  • static ResourceBundle getBundle(String baseName) : 通过读取在src下面的properties文件的名称(不要扩展名),得到一个ResourceBundle对象!
  • String getString(String key): 获得指定key对应的value值 【driverClass=com.mysql.jdbc.Driver,只要将driverClass作为参数,就可以得到值!】
/*
     ResourceBundle类:
    读取properties配置文件!
    */
public class Test {
    public static void main(String[] args) {
        // 通过ResourceBundle类的静态方法,得到ResourceBundle类的对象
        ResourceBundle bundle = ResourceBundle.getBundle("fis"); // 只要给定properties配置文件的名称,不要扩展名!
        // 获得指定参数的值
        String driverClass = bundle.getString("driverClass");
        String url = bundle.getString("url");
        String username = bundle.getString("username");
        String password = bundle.getString("password");
        System.out.println(driverClass);
        System.out.println(url);
        System.out.println(username);
        System.out.println(password);
    }
}

后记

在我们的日常开发中,底层的框架就已经将Properties配置文件的信息在系统初始化时就加载进系统了,不需要要我们操作,了解即可。

喜欢我的文章的朋友点点喜欢、收藏,也欢迎朋友们评论区留下你的意见和建议,恕毅在此拜谢!


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5天前
|
Java
【Java】Math、System、RunTime、BigDecimal类常用方法
【Java】Math、System、RunTime、BigDecimal类常用方法
|
3天前
|
安全 Java API
16 个最常用的 Java 实用程序类
【8月更文挑战第16天】
10 1
16 个最常用的 Java 实用程序类
|
3天前
|
Java
IO流操作-------File类、输入流和输出流(二)
这篇文章介绍了Java中IO流操作的基本概念和使用,包括字节流和字符流的读取与写入,以及如何使用缓冲流提高文件读写效率和实现文件复制的方法。
IO流操作-------File类、输入流和输出流(二)
|
1天前
|
SQL Java Apache
实时计算 Flink版操作报错合集之使用parquet时,怎么解决报错:无法访问到java.uti.Arrays$ArrayList类的私有字段
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
3天前
|
Java
IO流操作-------File类(一)
这篇文章介绍了Java中File类的常用操作,包括创建文件/文件夹、删除文件、查询文件属性(如存在性、大小、名称、路径)以及递归遍历文件夹下所有文件的方法。
IO流操作-------File类(一)
|
4天前
|
Oracle 安全 Java
JDK8到JDK28版本升级的新特性问题之在Java 15及以后的版本中,密封类和密封接口是怎么工作的
JDK8到JDK28版本升级的新特性问题之在Java 15及以后的版本中,密封类和密封接口是怎么工作的
|
5天前
|
设计模式 人工智能 Java
Java 如何使用单例类
Java 如何使用单例类
5 1
|
5天前
|
Java
【Java】static 类方法中注意事项
【Java】static 类方法中注意事项
|
1月前
|
Java 大数据
解析Java中的NIO与传统IO的区别与应用
解析Java中的NIO与传统IO的区别与应用
|
1月前
|
存储 缓存 Java
Java零基础入门之IO流详解(二)
Java零基础入门之IO流详解(二)