原链接为:http://www.cnblogs.com/bakari/p/3562244.html
知识学而不用,就等于没用,到真正用到的时候还得重新再学。最近在看几款开源模拟器的源码,里面涉及到了很多关于Properties类的引用,由于Java已经好久没用了,而这些模拟器大多用Java来写,外加一些脚本语言Python,Perl之类的,不得已,又得重新拾起。本文通过看《Java编程思想》和一些网友的博客总结而来,只为简单介绍Properties类的相关操作。
一、Java Properties类
Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支持的配置文件,配置文件中很多变量是经常改变的,这样做也是为了方便用户,让用户能够脱离程序本身去修改相关的变量设置。像Python支持的配置文件是.ini文件,同样,它也有自己读取配置文件的类ConfigParse,方便程序员或用户通过该类的方法来修改.ini配置文件。在Java中,其配置文件常为.properties文件,格式为文本文件,文件的内容的格式是“键=值”的格式,文本注释信息可以用"#"来注释。
Properties类继承自Hashtable,如下:
它提供了几个主要的方法:
1. getProperty ( String key),用指定的键在此属性列表中搜索属性。也就是通过参数 key ,得到 key 所对应的 value。
2. load ( InputStream inStream),从输入流中读取属性列表(键和元素对)。通过对指定的文件(比如说上面的 test.properties 文件)进行装载来获取该文件中的所有键 - 值对。以供 getProperty ( String key) 来搜索。
3. setProperty ( String key, String value) ,调用 Hashtable 的方法 put 。他通过调用基类的put方法来设置 键 - 值对。
4. store ( OutputStream out, String comments),以适合使用 load 方法加载到 Properties 表中的格式,将此 Properties 表中的属性列表(键和元素对)写入输出流。与 load 方法相反,该方法将键 - 值对写入到指定的文件中去。
5. clear (),清除所有装载的 键 - 值对。该方法在基类中提供。
二、Java读取Properties文件
Java读取Properties文件的方法有很多,详见: Java读取Properties文件的六种方法
但是最常用的还是通过java.lang.Class类的getResourceAsStream(String name)方法来实现,如下可以这样调用:
InputStream in = getClass().getResourceAsStream("资源Name");作为我们写程序的,用此一种足够。
或者下面这种也常用:
InputStream in = new BufferedInputStream(new FileInputStream(filepath));
三、相关实例
下面列举几个实例,加深对Properties类的理解和记忆。
我们知道,Java虚拟机(JVM)有自己的系统配置文件(system.properties),我们可以通过下面的方式来获取。
1、获取JVM的系统属性
复制代码
1 import java.util.Properties;
2
3 public class ReadJVM {
4 public static void main(String[] args) {
5 Properties pps = System.getProperties();
6 pps.list(System.out);
7 }
8 }
复制代码
结果:
2、随便新建一个配置文件(Test.properties)
name=JJ
Weight=4444
Height=3333
复制代码
1 public class getProperties {
2 public static void main(String[] args) throws FileNotFoundException, IOException {
3 Properties pps = new Properties();
4 pps.load(new FileInputStream("Test.properties"));
5 Enumeration enum1 = pps.propertyNames();//得到配置文件的名字
6 while(enum1.hasMoreElements()) {
7 String strKey = (String) enum1.nextElement();
8 String strValue = pps.getProperty(strKey);
9 System.out.println(strKey + "=" + strValue);
10 }
11 }
12 }
复制代码
3、一个比较综合的实例
根据key读取value
读取properties的全部信息
写入新的properties信息
复制代码
1 //关于Properties类常用的操作
2 public class TestProperties {
3 //根据Key读取Value
4 public static String GetValueByKey(String filePath, String key) {
5 Properties pps = new Properties();
6 try {
7 InputStream in = new BufferedInputStream (new FileInputStream(filePath));
8 pps.load(in);
9 String value = pps.getProperty(key);
10 System.out.println(key + " = " + value);
11 return value;
12
13 }catch (IOException e) {
14 e.printStackTrace();
15 return null;
16 }
17 }
18
19 //读取Properties的全部信息
20 public static void GetAllProperties(String filePath) throws IOException {
21 Properties pps = new Properties();
22 InputStream in = new BufferedInputStream(new FileInputStream(filePath));
23 pps.load(in);
24 Enumeration en = pps.propertyNames(); //得到配置文件的名字
25
26 while(en.hasMoreElements()) {
27 String strKey = (String) en.nextElement();
28 String strValue = pps.getProperty(strKey);
29 System.out.println(strKey + "=" + strValue);
30 }
31
32 }
33
34 //写入Properties信息
35 public static void WriteProperties (String filePath, String pKey, String pValue) throws IOException {
36 Properties pps = new Properties();
37
38 InputStream in = new FileInputStream(filePath);
39 //从输入流中读取属性列表(键和元素对)
40 pps.load(in);
41 //调用 Hashtable 的方法 put。使用 getProperty 方法提供并行性。
42 //强制要求为属性的键和值使用字符串。返回值是 Hashtable 调用 put 的结果。
43 OutputStream out = new FileOutputStream(filePath);
44 pps.setProperty(pKey, pValue);
45 //以适合使用 load 方法加载到 Properties 表中的格式,
46 //将此 Properties 表中的属性列表(键和元素对)写入输出流
47 pps.store(out, "Update " + pKey + " name");
48 }
49
50 public static void main(String [] args) throws IOException{
51 //String value = GetValueByKey("Test.properties", "name");
52 //System.out.println(value);
53 //GetAllProperties("Test.properties");
54 WriteProperties("Test.properties","long", "212");
55 }
56 }
复制代码
结果:
Test.properties中文件的数据为:
#Update long name
#Sun Feb 23 18:17:16 CST 2014
name=JJ
Weight=4444
long=212
Height=3333
分享到:
相关推荐
<项目介绍> - 北航数理统计fisher判别例题及课后题MATLAB实现 - 不懂运行,下载完可以私聊问,可远程教学 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
linux
基于Spring Boot框架实现的校园失物招领网站,系统包含两种角色:管理员、用户,系统分为前台和后台两大模块,主要功能如下。 【前台】: - 首页留言板:展示用户对网站的留言和反馈信息。 - 公告信息:管理员发布的重要公告和通知信息。 - 失物信息:展示已发布的失物信息。 - 寻物启事:用户发布的寻物启事。 - 个人中心:用户可以查看和编辑个人信息。 【管理员】: - 个人中心:管理员可以查看和编辑个人信息。 - 管理员管理:管理员可以对其他管理员进行管理,包括添加、编辑和删除管理员账号。 - 操作日志管理:记录管理员的操作日志,包括登录、发布公告、删除失物信息等。 - 基础数据管理:管理员可以管理系统的基础数据,包括分类、标签等信息的添加、编辑和删除。 - 留言板管理:管理员可以管理首页留言板的留言信息,包括审核、删除等操作。 - 公告信息管理:管理员可以发布和管理系统的公告信息,包括添加、编辑和删除公告。 - 失物信息管理:管理员可以管理失物信息,包括审核、删除等操作。 - 寻物启事管理:管理员可以管理寻物启事,包括审核、删除等操作。 - 用户管理:管理员可以管理用户账号,
行业研究报告、行业调查报告、研报
# 基于PyTorch的YOLOv5目标检测系统 ## 项目简介 本项目是基于PyTorch框架实现的YOLOv5目标检测系统。YOLOv5是一种高效的目标检测算法,能够在实时场景中快速准确地检测出图像中的多个目标。本项目提供了完整的训练、预测和评估流程,支持自定义数据集的训练和模型性能的评估。 ## 项目的主要特性和功能 1. 高性能目标检测基于YOLOv5算法,能够在实时场景中高效地检测出图像中的多个目标。 2. 多模型支持支持YOLOv5的不同规模模型(如YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x),用户可以根据需求选择合适的模型。 3. 自定义数据集训练支持使用自定义数据集进行模型训练,用户可以根据自己的需求训练特定类别的目标检测模型。 4. 模型评估提供详细的模型评估功能,包括计算平均精度(mAP)和绘制性能曲线。 5. 多种预测模式支持单张图片预测、视频检测、FPS测试、目录遍历检测等多种预测模式。
本项目为在树莓派4B开发板上,通过Qt+FFMPEG以多线程分别解码、编码USB摄像头视频数据。其中USB摄像头视频输入格式为MJPEG。通过树莓派的硬件编码器“h264_omx”进行硬件编码封装成mp4文件。详细说明见https://blog.csdn.net/wang_chao118/article/details/143743277?sharetype=blogdetail&sharerId=143743277&sharerefer=PC&sharesource=wang_chao118&spm=1011.2480.3001.8118
远程访问工具+支持xftp功能
c语言
# 基于Arduino UNO的智能垃圾收集系统 ## 项目简介 本项目是一个基于Arduino UNO的智能垃圾收集系统,旨在通过自动化技术提高垃圾处理的效率和环保性。系统能够自动区分湿垃圾和干垃圾,并在垃圾桶满时通知相关人员进行处理。此外,系统还设有奖励机制,鼓励用户积极参与垃圾分类。 ## 项目的主要特性和功能 1. 自动垃圾分类系统能够自动识别并分离湿垃圾和干垃圾,减少人工分类的工作量。 2. 满载通知当垃圾桶满时,系统会自动通知授权人员进行垃圾清理。 3. 奖励机制用户在正确投放垃圾后,系统会给予相应的奖励,激励用户积极参与垃圾分类。 4. 基于Arduino UNO系统核心采用Arduino UNO开发板,确保系统的稳定性和可扩展性。 ## 安装使用步骤 1. 硬件准备 确保所有硬件组件(如Arduino UNO、传感器、电机等)已正确连接并供电。 根据电路图检查所有连接,确保无误。 2. 软件准备
Python毕业生信息审核系统源码是一款专为教育机构设计的毕业生信息管理工具。该系统利用Python语言开发,旨在简化毕业生信息的审核流程,确保信息的准确性和完整性。核心功能包括: 信息录入:允许用户输入毕业生的基本信息,如姓名、学号、专业等。 数据验证:系统自动校验输入数据的格式和逻辑正确性,减少人工审核的错误。 审核管理:提供审核功能,管理员可以对毕业生信息进行审核,标记审核状态。 报告生成:系统能够根据审核结果生成毕业生信息报告,方便打印和存档。 源码开放,便于二次开发和功能扩展,适用于学校、学院等教育机构的毕业生信息管理。通过自动化处理,该系统大大提高了信息审核的效率和准确性。
升级方法为: 1、将所有需要升级的程序拷贝到U盘根目录下。 2、打开USBBOOT开关:开机,音量减到零,按住键控板上的音量减键的同时按遥控器上的屏显键(或返回键)进入工厂模式。进入“高级设置”选项(密码为123456),将“USBBOOT”改为“开”。 3、交流关机,插入u盘(请插在最下方的USB端口),拔掉其他usb接口上的usb设备,交流开机。 4、升级主程序会在电视界面上出现android机器人,其下方有升级进度,升级完成后会自动重启。 5、升级后第一次重启会比平时长3-5分钟,请勿在这个阶段关机,以避免由于数据拷贝出错导致的系统异常。 注意: 1、如果没有升级成功,请先确认USBBOOT项是否为开,检查是否插在最下方的端口(只有这个端口可以进行自动升级) 2、确认u盘是否符合要求并且根目录下存在需要的文件(aml_autoscript、update.zip、factory_update_param.aml和spim2c.bin) 3、或者使用其他u盘再试一下
基于二阶锥约束的ieee33节点潮流计算,运行环境需要matpower7.1,求解器为yalmip+gurobi。求解结果与matpower中的ieee33节点求解结果一致,可用于配电网故障重构,故障定位的基础代码。
# 基于Arduino编程的冰箱警报系统 ## 项目简介 这是一个基于Arduino编程的项目,通过连接到冰箱门开关的警报系统来提醒用户冰箱门开启时间过长。用户可以在设定的时间内关闭冰箱门,否则警报会响起。项目使用LCD控制器面板来设置和配置警报延迟时间。 ## 项目的主要特性和功能 1. 警报功能在冰箱门开启后,系统会开始计时,如果用户在设定的时间内未关闭冰箱门,警报会响起。 2. LCD配置面板使用LCD控制器面板设置和配置警报延迟时间。 3. 可配置警报时间用户可以根据需要调整警报延迟时间。 4. 状态显示LCD面板显示冰箱门的状态(开启关闭)。 ## 安装使用步骤 1. 下载并解压项目文件。 2. 准备硬件部件根据提供的物料清单(Bill of Materials)准备所需的硬件部件。 3. 连接硬件部件按照项目文档中的连接表(Connection Table)将硬件部件连接到Arduino主板和LCD控制器面板。
# 基于Java的学生管理系统 ## 项目简介 本项目是一个基于Java的学生管理系统,旨在提供一个简单而有效的平台来管理学生的基本信息。系统支持学生信息的增删改查操作,并提供了一个图形用户界面(GUI)以便于用户交互。 ## 项目的主要特性和功能 1. 学生信息管理支持添加、删除、更新和查询学生信息。 2. 登录功能提供管理员登录功能,确保系统的安全性。 3. 分页查询支持分页显示学生信息,方便用户浏览大量数据。 4. 数据持久化通过数据库操作实现学生信息的持久化存储。 5. 图形用户界面提供友好的GUI界面,方便用户进行操作。 ## 安装使用步骤 1. 下载源码从项目仓库下载源码文件。 2. 导入项目将项目导入到支持Java开发的IDE中(如Eclipse或IntelliJ IDEA)。 3. 配置数据库根据项目中的DBUtil类配置数据库连接信息。 4. 运行项目运行Main.java文件启动学生管理系统。
文件名:Better Lit Shader 2021 v1.1.43.unitypackage Better Lit Shader 2021 是一款在Unity中广受欢迎的着色器插件,主要用于增强光照和材质表现。它在性能和美观度上做出平衡,非常适合希望在Unity中实现高质量视觉效果的开发者,特别是那些想要获得逼真光照效果的项目。 主要功能 多光照支持:支持多个光源在场景中同时使用,例如主光源、补光和环境光等。Better Lit Shader 可以很好地处理这些光源,并能优化性能,使得不同光源间的叠加效果更加自然。 PBR(物理材质)支持:Better Lit Shader 完全支持物理材质渲染(PBR),提供了金属、粗糙度、法线贴图等标准PBR通道。它使得材质在光照下的反应更真实,尤其适合需要高度拟真效果的游戏或可视化项目。 基于HDRP和URP优化:Better Lit Shader 可以兼容Unity的高画质渲染管线(HDRP)和通用渲染管线(URP),并在这两个管线下都能提供优化的材质效果。对于不同管线,该插件提供了专门的预设和优化选项。 纹理贴图和混合:支持多种材
# 基于Spring Cloud Alibaba的仿12306售票系统 ## 项目简介 本项目是一个仿照12306售票系统的微服务项目,采用Spring Cloud Alibaba、Spring Boot 3、JDK 17、MySQL、Redis、Nacos、Sentinel、Seata、RocketMQ等技术栈。项目实现了前后端分离,前端包括admin和web模块,后端包括gateway、member、business、batch等模块。 ## 项目的主要特性和功能 ### 会员模块 登录注册支持手机号+验证码的登录注册方式。 乘客管理用户可以为自己或他人购票。 余票查询查询某日起点到终点所有车次和余票。 车票购买选择一趟车,选择一个乘客,选择一个座位进行购票。 我的车票购买成功后查看车票。 ### 管理模块 基础车次维护维护车站、车次、车厢、座位、到站等信息。 每日车次维护生成每日车次数据。 会员管理查看所有会员。
关于我写的博客“matlab”的那个资源cplex1210
系统包含两种角色:用户、管理员,系统分为前台和后台两大模块,主要功能如下: 1 用户功能模块的实现 系统前台主界面 用户在系统前台可查看系统信息,展示整体系统功能和布局。 用户注册界面 没有账号的用户可在注册界面进行注册操作,输入必要的信息完成账号创建。 用户登录界面 用户在登录界面输入登录信息,点击登录按钮进行系统登录。 笔记分享详情界面 用户可选择笔记分享查看详细信息,了解具体内容和相关评论。 添加笔记分享界面 用户登录后可在此界面添加新的笔记分享信息,发布自己的笔记内容。 我的收藏界面 用户可在此界面管理个人收藏的笔记分享信息,查看和删除收藏的内容。 2 管理员功能模块的实现 管理员登录界面 管理员需通过登录界面进入系统后台,进行系统管理操作。 用户管理界面 管理员在用户管理界面可查看所有用户信息,并对其进行编辑和删除操作。 笔记类型管理界面 管理员可在此界面对笔记类型信息进行增删改查操作,管理笔记分类。 笔记分享管理界面 管理员可在此界面对笔记分享信息进行增删改查操作,管理用户发布的笔记内容。
# 基于Spring Boot和Vue的MuMuWiki知识库系统 ## 项目简介 MuMuWiki是一个基于Spring Boot和Vue框架开发的知识库系统,旨在提供一个高效、易用的平台来管理和分享知识。系统支持电子书、文档、分类等多种内容的创建、编辑、删除和查询,并提供了用户登录、权限管理、日志记录等功能。 ## 项目的主要特性和功能 1. 电子书管理支持电子书的创建、编辑、删除和查询,包括电子书的名称、描述、封面、文档数量、阅读次数和点赞次数等信息。 2. 文档管理支持文档的创建、编辑、删除和查询,包括文档的名称、内容、阅读次数和点赞次数等信息。 3. 分类管理支持分类的创建、编辑、删除和查询,包括分类的名称、父分类和排序等信息。 4. 用户管理支持用户的注册、登录、密码重置、信息修改和删除等功能。 5. 权限管理通过拦截器和过滤器实现用户登录状态的验证和权限控制。
# 基于Spring Boot和Quartz的火车票务管理系统 ## 项目简介 火车票务管理系统是一个基于Spring Boot和Quartz框架的综合性票务管理系统,旨在提供高效、可靠的火车票务服务。系统涵盖了火车票的查询、预订、管理等功能,支持定时任务调度,确保票务信息的实时更新和处理。 ## 项目的主要特性和功能 ### 1. 火车票查询与预订 火车票查询用户可以通过系统查询火车票的详细信息,包括车次、出发时间、到达时间、座位类型等。 火车票预订用户可以在线预订火车票,系统支持多种支付方式,确保购票流程的便捷性。 ### 2. 定时任务调度 Quartz任务调度系统使用Quartz框架进行定时任务调度,自动生成每日车次数据、更新座位信息等。 任务管理管理员可以手动执行、暂停、重启、删除定时任务,灵活管理任务调度。 ### 3. 火车票管理 车次管理管理员可以添加、修改、删除火车车次信息,确保车次信息的准确性。