Java基础IO篇--Properties类

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 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配置文件的信息在系统初始化时就加载进系统了,不需要要我们操作,了解即可。

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


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
7月前
|
存储 网络协议 安全
Java网络编程,多线程,IO流综合小项目一一ChatBoxes
**项目介绍**:本项目实现了一个基于TCP协议的C/S架构控制台聊天室,支持局域网内多客户端同时聊天。用户需注册并登录,用户名唯一,密码格式为字母开头加纯数字。登录后可实时聊天,服务端负责验证用户信息并转发消息。 **项目亮点**: - **C/S架构**:客户端与服务端通过TCP连接通信。 - **多线程**:采用多线程处理多个客户端的并发请求,确保实时交互。 - **IO流**:使用BufferedReader和BufferedWriter进行数据传输,确保高效稳定的通信。 - **线程安全**:通过同步代码块和锁机制保证共享数据的安全性。
249 23
|
8月前
|
缓存 网络协议 Java
JAVA网络IO之NIO/BIO
本文介绍了Java网络编程的基础与历史演进,重点阐述了IO和Socket的概念。Java的IO分为设备和接口两部分,通过流、字节、字符等方式实现与外部的交互。
231 0
|
12月前
|
Java
Java 中 IO 流的分类详解
【10月更文挑战第10天】不同类型的 IO 流具有不同的特点和适用场景,我们可以根据具体的需求选择合适的流来进行数据的输入和输出操作。在实际应用中,还可以通过组合使用多种流来实现更复杂的功能。
327 57
|
11月前
|
Java
java 中 IO 流
Java中的IO流是用于处理输入输出操作的机制,主要包括字节流和字符流两大类。字节流以8位字节为单位处理数据,如FileInputStream和FileOutputStream;字符流以16位Unicode字符为单位,如FileReader和FileWriter。这些流提供了读写文件、网络传输等基本功能。
174 10
|
12月前
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
298 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
12月前
|
Java 数据处理 开发者
揭秘Java IO流:字节流与字符流的神秘面纱!
揭秘Java IO流:字节流与字符流的神秘面纱!
150 1
|
12月前
|
存储 Java 程序员
【Java】文件IO
【Java】文件IO
111 0
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。
|
Java 大数据
解析Java中的NIO与传统IO的区别与应用
解析Java中的NIO与传统IO的区别与应用
|
Java 大数据 API
Java 流(Stream)、文件(File)和IO的区别
Java中的流(Stream)、文件(File)和输入/输出(I/O)是处理数据的关键概念。`File`类用于基本文件操作,如创建、删除和检查文件;流则提供了数据读写的抽象机制,适用于文件、内存和网络等多种数据源;I/O涵盖更广泛的输入输出操作,包括文件I/O、网络通信等,并支持异常处理和缓冲等功能。实际开发中,这三者常结合使用,以实现高效的数据处理。例如,`File`用于管理文件路径,`Stream`用于读写数据,I/O则处理复杂的输入输出需求。
611 12

热门文章

最新文章