Java 类之 java.util.Properties
Java 类之 java.util.Properties
文章目录
- Java 类之 java.util.Properties
- 一、简介
- 二、主要功能
- 1、存储键值对
- 2、读取文件与属性
- 代码示例
- 运行结果
- 截图
- 3、设置属性并保存文件
- 代码示例
- 结果截图
- 4、遍历属性
- 代码示例
- 运行结果
关联博客:《基于 Java 列举和说明常用的外部化配置的实现方式》https://blog.csdn.net/qq_29689343/article/details/134408616
一、简介
java.util.Properties 是 Java 中用于处理属性文件的一个类。
属性文件通常用于存储配置信息,例如应用程序的设置和参数。Properties 类提供了一种方便的方式来管理键值对,其中键和值都是字符串类型。
它本质上是一个 Hashtable ,因为 Hashtable 已经过时了,所以了解即可!
问题:
Hashtable是不是有点过时了?ChatGPT 回答:是的,
Hashtable类在Java中被认为有点过时。虽然它是一个实现了基本的哈希表功能的类,但在 Java Collections Framework 中引入了更先进、更强大的替代类,如HashMap。
HashMap是Hashtable的轻量级替代品,它具有相似的功能,但是在性能上更优越。HashMap允许空键和空值,而Hashtable不允许。此外,Hashtable的方法都是同步的,这意味着在多线程环境下,对Hashtable的操作是线程安全的。然而,这也带来了一些性能开销。如果你在单线程环境下工作,并且不需要线程安全性,那么使用
HashMap更为推荐。如果需要线程安全性,则可以考虑使用ConcurrentHashMap或者通过Collections.synchronizedMap方法包装HashMap。总体来说,在现代 Java 开发中,更常见的做法是使用
HashMap或其他相关的集合类,而不是直接使用Hashtable。
public class Properties extends Hashtable<Object,Object>
二、主要功能
1、存储键值对
Properties 对象可以存储键值对,其中键和值都是字符串。这些键值对通常以文本文件的形式存储,可以由人类读取和编辑。
2、读取文件与属性
代码示例
package com.zibo;import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;public class Main {public static void main(String[] args) {// 例子:读取属性文件Properties properties = new Properties();// config.properties 文件放在根目录下!可能存在中文乱码的问题,这里着重演示读取的过程,不做处理try (InputStream input = new FileInputStream("config.properties")) {properties.load(input);System.out.println(properties.getProperty("name"));System.out.println(properties.getProperty("age"));} catch (IOException e) {e.printStackTrace();}}
}
运行结果
zibo
27
截图

3、设置属性并保存文件
会创建新文件!如果文件名相同会覆盖!
代码示例
package com.zibo;import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Properties;public class Main {public static void main(String[] args) {Properties properties = new Properties();try (OutputStream out = new FileOutputStream("config.properties")) {// 修改属性properties.setProperty("name", "ZIBO");properties.setProperty("age", "18");// 保存属性到 config.properties 文件properties.store(out, "Set 'name' and 'age' value");} catch (IOException e) {e.printStackTrace();}}
}
结果截图

4、遍历属性
代码示例
package com.zibo;import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;public class Main {public static void main(String[] args) {// 例子:读取属性文件Properties properties = new Properties();// config.properties 文件放在根目录下!可能存在中文乱码的问题,这里着重演示读取的过程,不做处理try (InputStream input = new FileInputStream("config.properties")) {properties.load(input);// 遍历所有属性properties.forEach((key, value) -> System.out.println(key + " = " + value));} catch (IOException e) {e.printStackTrace();}}
}
运行结果
name = ZIBO
age = 18
相关文章:
Java 类之 java.util.Properties
Java 类之 java.util.Properties 文章目录 Java 类之 java.util.Properties一、简介二、主要功能1、存储键值对2、读取文件与属性代码示例运行结果截图 3、设置属性并保存文件代码示例结果截图 4、遍历属性代码示例运行结果 关联博客:《基于 Java 列举和说明常用的外…...
我遇到的bug(活动)
目录 方向一:身为程序员遇到过的奔溃瞬间 方向二:如何解决遇到的奔溃瞬间 方向三:在解决完后获得的收获和体会 方向一:身为程序员遇到过的奔溃瞬间 在一个项目中,我负责实现一个复杂的图像处理算法。经过几天的努力…...
MIB 6.1810实验Xv6 and Unix utilities(3)pingpong
Mit6.S081-实验1-Xv6 and Unix utilities-pingpong问题_Isana_Yashiro的博客-CSDN博客 Write a user-level program that uses xv6 system calls to ping-pong a byte between two processes over a pair of pipes, one for each direction. The parent should send a byte to…...
压力测试总共需要几个步骤?思路总结篇
在运维工作中,压力测试是一项很重要的工作。比如在一个网站上线之前,能承受多大访问量、在大访问量情况下性能怎样,这些数据指标好坏将会直接影响用户体验。今天我们就来深入了解下压力测试! 1、首先,什么是压力测试&…...
03_面向对象高级_多态
多态 1. 什么是多态? “多态” 是在 “继承” 的基础上实现的一种现象,具体表现为:对象多态、行为多态。 public class HelloWorld {public static void main(String[] args) {// 1. 对象多态Human h1 new Student();Human h2 new Teach…...
【Kingbase FlySync】界面化管控平台:2.配置数据库同步之KES>KES
【Kingbase FlySync】界面化管控平台:3.配置数据库同步之KES->KES 部署KES数据库到KES数据库同步服务1.登录KFS管理平台2.开始配置数据节点信息(1)配置node1数据节点(2)配置node2数据节点 3.KFS拓扑图配置4.开始部署5.启动同步程序并查验是否运行正常 测试同步1.从node1数据…...
企业计算机服务器中了mallox勒索病毒怎么解决,勒索病毒解密文件恢复
随着科技技术的不断发展,网络技术得到了快速提升,但网络安全威胁也不断增加,近期,云天数据恢复中心陆续接到很多企业的求助信息,企业的计算机服务器遭到了mallox勒索病毒攻击,导致企业的所有业务中断&#…...
Sonar生成PDF错误Can‘t get Compute Engine task status.Retry..... HTTP error: 401
报错及修改: 报错:INFO: Can’t get Compute Engine task status.Retry… org.sonarqube.ws.connectors.ConnectionException: HTTP error: 401, msg: , query: org.apache.commons.httpclient.methods.GetMethod7a021f49 ERROR: Problem generating PD…...
storage和正则表达式
一、Storage 1.认识Storage WebStorage主要提供了一种机制,可以让浏览器提供一种比cookie更直观的key、value存储方式: localStorage:本地存储,提供的是一种永久性的存储方法,在关闭掉网页重新打开时,存…...
【数据结构】图的广度优先遍历
一.广度优先遍历的基本思想 (1)访问顶点v; (2)依次访问v的各个未被访问的邻接点v1,v2,v3……,vk; (3)分别从v1,v2,v3……...
AM@函数展开成幂级数@间接法@常用麦克劳林幂级数展开公式
文章目录 间接法推导幂级数展开常用麦克劳林幂级数展开公式应用例例例 间接法推导幂级数展开 已知函数的幂级数展开公式间接推导其他函数幂级数 使用原始的推导公式推导函数的幂级数展开是繁琐不便的,需要分别计算各项系数 a n f ( n ) ( 0 ) n ! a_{n}\frac{f^{(n)}(0)}{n!}…...
LeetCode994.腐烂的橘子
看完题我觉得这不是和上一道岛屿的题一样简单嘛,然后写了将近2个小时才写出来,我的思路就是,用check()先对grid检查一下,是否有以下情况: (如果有1的周围都是空,则这个位置用不腐烂,…...
【开源】基于Vue和SpringBoot的康复中心管理系统
项目编号: S 056 ,文末获取源码。 \color{red}{项目编号:S056,文末获取源码。} 项目编号:S056,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 普通用户模块2.2 护工模块2.3 管理员…...
【音视频基础】AVI文件格式
AVI文件采用的是RIFF文件结构方式。波形音频wave,MIDI和数字视频AVI都采用这种格式存储。 AVI文件的整体结构如下图所示 构造RIFF文件的基本单元叫做数据块(Chunk),每个数据块包含3个部分 4字节的数据块标记(或者叫…...
图书馆整理I(从尾到头打印列表),剑指offer,力扣
目录 题目地址: 我们直接看题解吧: 解题方法: 难度分析: 审题目事例提示: 解题思路(辅助栈): 代码(递归): 代码(列表插入): 相似题目对…...
C++编写的多线程自动爬虫程序
目录 引言 一、程序的设计 二、程序的实现 三、程序的测试 四、优化与改进 五、代码示例 总结 引言 随着互联网的快速发展,网络爬虫程序已经成为数据采集、信息处理的重要工具。C作为一种高效的编程语言,具有高效的并发处理能力和丰富的网络编程…...
SMB信息泄露的利用
一、背景 今天分享SMB信息泄露,SMB(Server Message Block)网络通信协议,早些时候被用于Web链接和客户端与服务器之间的信息通信,现在大部分Web页面使用HTTP协议,在web领域应用较少。另一方面SMB协议还是被…...
QT自定义信号,信号emit,信号参数注册
qt如何自定义信号 使用signals声明返回值是void在需要发送信号的地方使用 emit 信号名字(参数)进行发送 在需要链接的地方使用connect进行链接 ct进行链接...
06.webpack性能优化--构建速度
优化babel-loaderhappyPackIgnorePluginparalleUglifyPluginnoParse自动刷新 1 happypack多进程打包 js单线程,开启多进程打包提高构建速度(特别是多核CPU) const HappyPack require(happypack)module.exports smart(webpackCommonConf,…...
11-15 周三 softmax 回归学习
11-15 周三 softmax 回归学习 时间版本修改人描述2023年11月15日11:17:27V0.1宋全恒新建文档 简介 softmax分享可以参考什么是softmax 回归估计一个连续值,分类预测一个离散类别。 恶意软件的判断 回归和分类 分类可以认为从回归的单输出变成多输出 B站学习 softm…...
ChatGPT对技术从业者的影响:机遇与挑战
在人工智能技术飞速发展的当下,ChatGPT这类大语言模型的横空出世,无疑在科技领域投下了一颗重磅炸弹。对于软件测试从业者而言,这既是一场前所未有的机遇,也是一次严峻的挑战。它不仅重塑了测试工作的模式与效率,更对从…...
RT-Thread启动流程与BSP移植实战:从复位向量到多任务调度
1. 项目概述:从“上电”到“跑起来”的旅程当你拿到一块新的开发板,烧录好RT-Thread的固件,按下复位键,屏幕上开始打印出熟悉的“ | / -”启动动画和版本信息时,你有没有想过,从芯片上电复位到你的main_thr…...
别再滥用Promise.all了!聊聊Vue/React项目中用p-limit控制并发请求的实战心得
别再滥用Promise.all了!聊聊Vue/React项目中用p-limit控制并发请求的实战心得 在Vue/React项目中处理批量数据请求时,许多开发者会条件反射地使用Promise.all,认为这是最高效的方案。直到某次线上事故——用户尝试导出500条订单数据时浏览器直…...
YOLO-ONNX-Java 性能监控指标全面解析
YOLO-ONNX-Java 性能监控指标全面解析 概述 在计算机视觉应用中,性能监控是确保系统稳定运行的关键环节。YOLO-ONNX-Java 作为一个纯 Java 实现的 AI 视觉识别项目,提供了丰富的性能监控指标来帮助开发者优化系统性能。本文将深入解析该项目的性能监控指…...
从零构建Sora 2-DaVinci双引擎协同工作站:Intel Xeon W9-3400系列+RTX 6000 Ada专属散热/供电/PCIe拓扑配置清单(附实测带宽衰减曲线)
更多请点击: https://codechina.net 第一章:Sora 2与DaVinci整合的架构演进与协同范式 Sora 2作为新一代多模态时序生成引擎,其核心能力已从单向视频合成跃迁至具备物理感知、因果推理与跨模态对齐的闭环生成范式。DaVinci则持续强化其在专业…...
STM32单片机引脚功能详解——从GPIO到AFIO的标准库配置指南(硬件总结四)
前言 在STM32的开发中,引脚是MCU与外部电路交互的物理桥梁。STM32F103C8T6这款经典的Cortex-M3单片机在LQFP48封装下仅有48个引脚,却能支持GPIO、ADC、USART、SPI、I2C、定时器、USB等多种外设功能——这得益于其灵活的多功能引脚复用机制。深入理解引脚…...
Cadence Virtuoso计算器函数面板:从仿真波形到关键指标,手把手教你提取运放GBW和相位裕度
Cadence Virtuoso计算器函数实战:运放AC特性自动化评估指南 在模拟电路设计的日常工作中,我们常常需要面对这样的场景:完成运放AC仿真后,面对密密麻麻的波形曲线,如何快速准确地提取出增益带宽积(GBW)和相位裕度(PM)这…...
3分钟掌握MangaOCR:日语漫画文本识别的终极解决方案
3分钟掌握MangaOCR:日语漫画文本识别的终极解决方案 【免费下载链接】manga-ocr Optical character recognition for Japanese text, with the main focus being Japanese manga 项目地址: https://gitcode.com/gh_mirrors/ma/manga-ocr 你是否曾面对日文漫画…...
SpringBoot3项目里用Druid总报错?试试这个1.2.18版本的starter,亲测有效
SpringBoot3与Druid兼容性实战:1.2.18版本Starter的救火指南 当你满怀期待地将SpringBoot2.x项目升级到SpringBoot3,却在集成Druid连接池时遭遇各种莫名其妙的报错,那种感觉就像在高速公路上突然爆胎。作为Java开发者最信赖的数据库连接池之…...
第七章:LLM输出质量评估方法——从指标到流程
本章难度:★★★★☆ | 预计阅读时间:10分钟 你将学到:LLM评估的四大核心维度、三大评估框架对比、LLM-as-Judge的用法与局限、人工评估设计方法、红队测试流程、以及如何建立完整的评估体系 引言:为什么评估是AI产品的核心竞争力 你上线了一个RAG聊天机器人,工程师说&qu…...
