properties 属性配置文件

properties 属性配置文件

  • 一、properties 文件的书写要求
  • 二、properties 属性配置文件的读取
    • 1.Properties 类
      • (1) Properties 类的常用方法
    • 2.通过 IO 流的方式读取 properties 文件(可移植性差)
    • 3.如何获取类路径下的文件的绝对路径(通用的方式)
    • 4.直接将类路径下的文件以流的形式返回(通用的方式)
    • 5.资源绑定器
  • 三、总结


一、properties 文件的书写要求

  • 键值对格式 key=value。
  • “=” 后面,value 前面的空格会被自动忽略。
  • value 后面的空格不会忽略。
  • “=” 后面的双引号,不会忽略。
  • “#” 后面内容为注释,会忽略。
  • key 和 value 都是 String 类型的。

二、properties 属性配置文件的读取

1.Properties 类

  • Properties 继承于 Hashtable,用于管理配置信息的类。
  • 由于 Properties 继承自 Hashtable 类,因此具有 Hashtable 的所有功能,同时还提供了一些特殊的方法来读取和写入属性文件。
  • Properties 类常用于存储程序的配置信息,例如数据库连接信息、日志输出配置、应用程序设置等。使用 Properties 类,可以将这些信息存储在一个文本文件中,并在程序中读取这些信息。

(1) Properties 类的常用方法

(1) String getProperty(String key) //通过 key 获取 value
(2) String getProperty(String key, String defaultProperty) //如果没有指定的 key,则使用默认值
(3) void load(InputStream streamIn) throws IOException //从输入流中读取键值对
(4) void store(OutPutStream out) //加载写入的文件
(5) setProperty(String key, String value) //将键值对写入到文件中
(6) clear() //清除所有的键值对
  • Properties 类提供了多种读取和写入属性文件的方法。其中最常用的方法是 load() 和 store() 方法。load() 方法可以从文件中读取属性,而 store() 方法可以将属性写入文件。

2.通过 IO 流的方式读取 properties 文件(可移植性差)

  • 这种方式的路径缺点:移植性差,在IDEA中默认的当前路径是 project 的根。
  • 这个代码假设离开了 IDEA,到了其他位置,可能当前路径就不是 project 的根了,这时路径就无效了。
public class Test{public static void main(String[] args) throws Exception {//通过 IO 流读取 classInfo.properties 文件(从项目根下开始的),也可以使用绝对路径的方式。FileReader reader = new FileReader("configuration-related/src/resources/classInfo.properties");//创建属性对象MapProperties pro = new Properties();  // key 和 value 都是 String 类型//加载pro.load(reader);//关闭流reader.close();//通过key获取valueString className = pro.getProperty("className");System.out.println(className);//通过反射机制实例化对象//创建的对象取决于类名(类名必须是完整的)Class c = Class.forName(className);Object obj = c.newInstance();System.out.println(obj);}
}

3.如何获取类路径下的文件的绝对路径(通用的方式)

  • 注意:src 是类的根路径。
  • 这种方式获取绝对路径是通用的,在不同操作系统都可以。
String path = Thread.currentThread().getContextClassLoader().getResource("类路径下的文件的路径").getPath();
// Thread.currentThread():当前线程对象
// getContextClassLoader():是线程对象的方法,可以获取到当前线程的类加载器对象。
// getResource(""):是类加载器的方法,当前线程的类加载器默认从类的根路径下加载资源。

4.直接将类路径下的文件以流的形式返回(通用的方式)

//JDK中内置了许多的类加载器
InputStream fileReader = Thread.currentThread().getContextClassLoader().getResourcesAsStream("类路径下的文件的路径"); // src 路径下开始的(类路径)
//使用系统类加载器的方式获取类路径下的资源(满足可移植性)   
InputStream fileReader = ClassLoder.getSystemClassLoader().getResourceAsStream("类路径下的文件路径");

5.资源绑定器

  • 资源绑定器,只能绑定 xxx.properties 文件。并且这个文件必须在类路径下。文件扩展名也必须是 properties 并且在写路径的时候,路径后面的扩展名不能写。
ResourceBundle bundle = ResourceBundle.getBundle("类路径下的文件路径");  // src 路径下开始的(类路径)

三、总结

  • 主要讲解多种读取 properties 文件的方法。
    • ① IO流 + Peoperties 类
    • ② 通过类加载器获取类路径下的 properties文件
    • ③ 资源绑定器的方式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/642953.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

输入某年某月某日,判断这一天是这一年的第几天?(Java)

思路: 1,分别定义三个变量来接收 年 月 日 2,累加已经过完的月份的天数 日期 3,二月份的天数要根据是否是闰年,随之改变 1 3 5 7 8 10 12 ---> 31天 4 6 9 11 ---> 30天 2 ---> 闰…

== 和 equals:对象相等性比较的细微差别

和 equals:对象相等性比较的细微差别 既要脚踏实地于现实生活,又要不时跳出现实到理想的高台上张望一眼。在精神世界里建立起一套丰满的体系,引领我们不迷失不懈怠。待我们一觉醒来,跌落在现实中的时候,可以毫无怨言地…

鸿蒙原生应用遍地开花,中小开发者能否分到一杯羹?

2023年对于华为鸿蒙来说,是颇具转折意义的一年,年初还挣扎在生死线上,年末已然渡过了万重山,开始踏上万里路。 时间回到2022年的12月,Strategy Analytics研究报告显示,2022年华为鸿蒙HarmonyOS手机全球市场…

REVIT二次开发 自动门窗墙体标注

步骤1 步骤2 步骤3 using System; using System.Collections.Generic; using System.Linq; using System

用户资源(菜单)控制学习使用

效果图 第一步 需要再定义常量资源 //信访听证 资源前缀public static final String RESPREFIX_MODULE_XINFTZ_"module_xinftz_";//听证专家库public static final ConstantItem RES_MODULE_XINFTZ_TINGZZJK new ConstantItem(RESPREFIX_MODULE_XINFTZ_ "tin…

【LeetCode】每日一题 2024_1_22 最大交换(模拟)

文章目录 LeetCode?启动!!!题目:最大交换题目描述:代码与解题思路 LeetCode?启动!!! 几百年没有见到题目描述这么短的题目了,泪目了 题目&#x…

计算机缺失msvcp110.dll如何修复?只需学会这个5个方法,轻松解决dll问题

丢失msvcp110.dll文件可能会引发一系列广泛的问题,这个动态链接库文件对于Windows操作系统中某些应用程序的正常运行至关重要。当msvcp110.dll缺失时,用户可能会遭遇如程序无法启动、运行过程中突然崩溃、功能受限或完全失效等现象。具体来说&#xff0c…

蓝桥杯真题(Python)每日练Day4

题目 OJ编号2117 题目分析 第一种先采用暴力的思想,从第一根竹子开始,找到连续的高度相同的竹子,砍掉这些竹子,一直循环这个方法,直到所有的竹子高度都为1。很明显,依次遍历竹子的高度复杂度为O&#x…

air001研究笔记.基于arduino快速开发简单项目

一、air001芯片简介 air001是厂商合宙推出的一款tssop封装的mcu芯片。支持swd与串口烧录,多面向简单的功能简单类别的电子产品,因为官方文档齐全上手简易,所以也特别适合非专业爱好者乃至于幼儿编程。芯片内置资源:AIR001芯片数据…

智能小程序环境配置流程

App 与智能小程序 在用户使用 App 扫描小程序的二维码或者点击设备,尝试进入小程序时,系统会对 App 当前环境与小程序所需运行环境进行比对,确定环境配置兼容后,App 才能启动并运行小程序。 比对规则中,主要涉及&…

撤销 Commit 的提交的两种方式

已经将 commit 提交到了 GitHub 之上: 进行以下操作,需保证 stash 列表中有刚才提交的修改 首先,在本地回退版本,使用如下命令: git reset --hard HEAD^ ^ 的个数表示回退几个版本,^^ 表示回到上上个版本。…

Redis分布式系统:集群

"还不如留给花园,多一瞬色彩~" 当我们聊到“集群”这一个词,我们脑中构想出的画面,一定是多台机器,构成的分布式系统,这可以被称为一个“集群”。其实,在前篇的哨兵机制下,奇数个监控…

Led以1秒为周期闪烁

Led初始不亮,灯0.5s亮,0.5秒之后灭,周期为1s 1s周期20MHZ时钟25_000_000计数器,25位二进制 module led_flash (//端口列表CLK,reset_n,led );input CLK;input reset_n;output reg led;//计数器最大值 CNT_MAX counter_max//计数器周期 T_CLK 时钟频率是50MHZ 周…

【算法小记】——机器学习中的概率论和线性代数,附线性回归matlab例程

内容包含笔者个人理解,如果错误欢迎评论私信告诉我 线性回归matlab部分参考了up主DR_CAN博士的课程 机器学习与概率论 在回归拟合数据时,根据拟合对象,可以把分类问题视为一种简答的逻辑回归。在逻辑回归中算法不去拟合一段数据而是判断输入…

git使用指南——以gitlab为例

注册gitlab 自行注册 新建项目 选择新建一个空白的项目 上传项目 clone项目地址到本地 执行完之后,会在目录下生成如下内容:进入里面,选择.git,要上传的内容(资料或代码复制到该目录下):…

【MATLAB源码-第123期】基于matlab的SSK(空间位移键控)调制和QSSK(正交空间位移键控)调制误码率对比。

操作环境: MATLAB 2022a 1、算法描述 1. SSK(空间位移键控): - 基本原理:SSK是一种MIMO(多输入多输出)系统中的调制技术。它通过选择性地激活不同的发送天线来传输信息。在每个时间槽&…

Nuxt2.x Error页面返回自定义请求状态码

一、问题描述 最近接到一个需求,针对Nuxt2.x的一个项目进行SEO优化,需要对404页面的状态进行修改,将404页面的请求状态码改为301,而不是404: 二、解决方案 1.几种无效尝试 (1)layouts下的err…

多家头部企业宣布「启动鸿蒙原生应用开发」,你看好鸿蒙系统走向「独立」吗?

我觉得跟着国家对鸿蒙的推进,就知道发展前景肯定是没错的。并且现在已经走向独立道路。 华为鸿蒙是国家主推的操作系统项目,而之前由于美丽国的一系列制裁后。华为也终于崛起;在1月18号的华为鸿蒙仪式中,推出了HarmonyOSNEXT星空…

Java基础 - 09 Set之linkedHashSet , CopyOnWriteArraySet

LinkedHashSet和CopyOnWriteArraySet都是Java集合框架提供的特殊集合类,他们在特定场景下有不同的用途和特点。 LinkedHashSet是Java集合框架中的一种实现类,它继承自HashSet并且保持插入顺序。它使用哈希表来存储元素,并使用链表来维护插入…

centos查看1分钟内修改过的文件

linux查看1分钟内修改过的文件 find / -name ‘.’ -mmin -1 查询1分钟内修改过的日志 查询根目录下以log结尾,1分钟内修改过的文件 find / -name ‘*.log’ -mmin -1 下面的命令是查询当前目录下所有的文件,并且在30分钟内修改过的文件 这个可以根…