Java如何读取properties文件

JAVA顺序读取Properties文件 import java.util.Collections; import java.util.Enumeration; import java.util.LinkedHashSet; import java.util.Properties; import java.util.Set; /** * 顺序读取 * @author Hoperun * */ public class Ordere 阅读详情

这两天做java项目,用到属性文件,到网上查资料,好半天也没有找到一个满意的方法能让我读取到.properties文件中属性值,很是郁闷,网上讲的获取属性值大概有以下方法,以下三种方法逐渐优化,以达到最好的效果

以下都以date.properties文件为例,该文件放在src目录下,文件内容为

startdate=2011-02-07
totalweek=25

方法一:

public class Stweek {
 static private String startdate = null;
 static private String totalweek = null;
 synchronized static public void loads(){
  if(startdate == null || totalweek == null)
  {
   FileInputStream is = null;
   Properties dbProps = new Properties();
     try {
        is = new FileInputStream(filepath);  
        dbProps.load(is);
        startdate = dbProps.getProperty("startdate");
        totalweek = dbProps.getProperty("totalweek");
      }
      catch (Exception e) {
        System.err.println("不能读取属性文件. " +
       "请确保db.properties在CLASSPATH指定的路径中");
      }
  }
 }

 public static String getStartdate() {
  if(tartdate==null)
   loads();
  return startdate;
 }


 public static String getTotalweek() {
  if(startdate==null)
   loads();
  return totalweek;
 } 

}

以上方法虽然也能获得配置文件内容,可是其最大的问题就是文件路径的定位(就是代码中的filepath取值问题),当采用绝对定位的时候,如果将工程移到另外一个盘符下运行,就需要修改源代码,否则就会报错,可是如果使用相对路径,当Stweek 类移到另外一个包中时,还是要修改源代码,否则会报错,所以说这个方法局限太大,不好 ,以下方法二能解决这个问题,可是其还是有些问题

方法二:

public class Stweek {
 InputStream is = null;
 Properties dbProps = null;
 public Stweek() {
  // TODO Auto-generated constructor stub
  is = getClass().getResourceAsStream("date.properties");
  dbProps = new Properties();
    try {
      dbProps.load(is);
    }
    catch (Exception e) {
      System.err.println("不能读取属性文件. " +
     "请确保db.properties在CLASSPATH指定的路径中");
    }
 }
 public String getStartdate()
 {
  String sd = null;
  sd = dbProps.getProperty("startdate");
  return sd;
 }

 public String getTotalweek()
 {
  String totalweek=null;
     totalweek = dbProps.getProperty("totalweek");
  return totalweek;
 }

}

这个方法的好处就是不用指出配置文件的绝对路径,而且不管是将Stweek 类放到另外的包中,还是将整个工程移到到另外的盘符下,代码依然可以正常运行,不会有找不到文件的问题,可是这个方法仍然有一个重大的缺陷,因为我们往往希望配置文件能够缓存在内存中,这样不用每次读取时都要访问硬盘(访问外存太浪费时间),为此我们希望使用静态变量、静态方法来缓存和获得变量,同时能够实现这些值的动态加载(load),那么问题来了,因为getClass().getResourceAsStream(“/date.properties”); 这一句只能出现在构造函数中(同鞋可以自己测试一下),动态load中并不能使用这个方法,怎么办呢,且看第三个方法

方法三:

import java.io.InputStream;
import java.util.Properties;

public class Stweek {
 static private String startdate = null;
 static private String totalweek = null;
 static{
  loads();
 }
 synchronized static public void loads(){
  if(startdate == null || totalweek == null)
  {
   InputStream is = Stweek.class.getResourceAsStream("date.properties");
   Properties dbProps = new Properties();
     try {
        dbProps.load(is);
        startdate = dbProps.getProperty("startdate");
        totalweek = dbProps.getProperty("totalweek");
      }
      catch (Exception e) {
        System.err.println("不能读取属性文件. " +
       "请确保db.properties在CLASSPATH指定的路径中");
      }
  }
 }
 public static String getStartdate() {
  if(startdate==null)
   loads();
  return startdate;
 }
 public static String getTotalweek() {
  if(startdate==null)
   loads();
  return totalweek;
 } 

}

这个方法不仅能够缓存配置文件内容,还能够做到自动加载配置文件的内容到内存,使用者完全不用考虑手动加载的过程,只需要在需要用到的地方直接调用Stweek.getStartdate()即可(因为是静态方法,事先连对像也不用创建的),这样如果内存中有缓存,函数就会直接读取内存中的数据,节省时间,如果没有缓存也不用担心,系统会自动为你加载,使用者完全不用知道其是如何实现的,只需要知道我能直接调用函数获得想要的值就行了,呵呵,简单吧

Java中properties文件读取教程 本文还有配套的精品资源,点击获取 简介:在Java应用中,properties文件是用于存储配置信息的常用格式。本篇详细介绍了如何读取properties文件,包括其格式、加载、内容读取、特殊字符处理、默认值设定、内容存储及更新等关键知识点。文章还提供了一些高级使用技巧和最佳实践,帮助开发者高效地处理properties文件,以确保应用程序配置的正确性和安全性。 ... 阅读详情

相关推荐

Lattice FPGA 开发工具Diamond使用流程总结——工具使用

本文介绍了一般的Diamond开发流程,包括工程创建、文件输入、IP使用、约束、管脚分配、和布线布局等流程

weixin_41895751的博客 2万+

java读取properties文件_Java读取Properties文件的六种方法

Java读取Properties文件有以下六种方法:1。使用java.util.Properties类的load()方法StringfileName="E:/system.properties";InputStreamin=newBufferedInputStream(newFileInputStream(fileName));Propertiesp=newProperties...

weixin_33327380的博客 4810

海天注塑机弘讯控制器Modbus数据采集实战指南

工业设备数据采集是MES系统、设备监控和工艺追溯的基础,其中注塑机联网是车间数字化的关键环节。Modbus协议作为工业通信的事实标准,以简单、开放、低成本的优势,成为海天注塑机弘讯控制器对外提供数据的主要方式。理解控制器型号与通信参数、捋清寄存器点位表与字节序规则,是稳定采集的前提。通过RS485串口或以太网轮询,可以实时获取产量、温度、压力、报警等关键数据,进而支撑OEE统计、质量追溯与异常监控。本文基于实战项目,以海天注塑机弘讯控制器为例,梳理从接线、参数配置到点位验证的完整流程,为现场工程师提供一套可

weixin_28733777的博客 907

java读取properties文件(java读取properties文件内容乱码)

Java读取properties配置文件如何操作呢? properties";//这里是指放在classes下,如果有包的话,前面加包名即可。例:/com/web/db。properties private String driver = ""; private String url = ""; priv...

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 345

梦幻西游端游脚本开发实战:从易语言到大漠多线程全解析

本文详细解析了梦幻西游端游脚本开发的全流程,从易语言基础入门到大漠插件多线程实战。重点介绍了易语言中文编程优势、大漠插件图色识别技术,以及多线程控制台开发技巧,帮助开发者高效实现游戏自动化,提升脚本稳定性和执行效率。

weixin_29251567的博客 1061

自监督学习与上下文赌博机融合:视觉决策中的协同优化与实战指南

在机器学习领域,自监督学习(Self-Supervised Learning)通过设计前置任务从无标注数据中学习通用表征,已成为解决标注数据稀缺问题的关键技术。其核心原理是利用数据自身的结构生成监督信号,训练编码器提取鲁棒特征。上下文赌博机(Contextual Bandits)作为强化学习的简化分支,专注于在给定上下文信息下做出单步最优决策,平衡探索与利用,广泛应用于推荐系统、广告投放等场景。将两者结合,构建端到端的协同训练框架,能让视觉表征的优化直接服务于最终的决策目标,同时利用自监督任务作为正则化项提

weixin_33721344的博客 521

Java中读取properties配置文件的八种方式总结

【代码】Java中读取properties配置文件的八种方式总结。

ღ᭄ꦿℒℴѵℯ青城এ⁵²º的博客 6129

无人机WIFI集群组网技术详解及成本分析

无人机WIFI集群组网技术是指利用无人机作为移动平台,通过集成高性能的WIFI模块,实现多架无人机之间以及无人机与地面控制站之间的无线通信组网。在协议层面,无人机WIFI集群组网需要遵循标准的无线通信协议,如IEEE 802.11系列(即WIFI标准),同时可能还需定制或优化路由协议、媒体访问控制(MAC)协议等,以确保高效、可靠的数据传输。数据安全与隐私保护:无人机集群组网中传输的数据可能涉及敏感信息,需采取加密、认证等安全措施,确保数据传输的安全性和用户隐私的保护。根据性能不同,价格差异较大。

专注多旋翼、复合翼无人机技术研究,从事低空经济行业。 1584

Java读取Properties配置文件的6种方式

Java读取Properties配置文件的6种方式

yirenDM的博客 6527

小程序跳转链接实战:https://wxaurl.cn/、weixin://dl/business/ 跳转与明文 URL Scheme 生成指南

本文聚焦小程序跳转链接开发核心技术,深入解析 https://wxaurl.cn/*TICKET* 与 weixin://dl/business/?t= *TICKET* 两种链接的生成方法。详细阐述生成前的准备工作、服务端接口调用步骤及注意事项,同时剖析 iOS 与 Android 系统在链接适配方面的差异。此外,针对明文 URL Scheme 获取,从平台设置、拼接规则、使用限制等方面展开讲解,并结合实际应用案例提出优化建议,帮助开发者快速掌握小程序跳转链接生成与明文URL Scheme获取的关键技术。

邓邓子的博客 2万+

YOLOv11改进 | Conv篇 | DWRSeg扩张式残差助力小目标检测 (附创新修改后的C3k2DWRSeg)

本文内容给大家带来的DWRSeg中的DWR模块来改进YOLOv11中的C2f和Bottleneck模块,主要针对的是小目标检测,主要创新点可以总结如下:多尺度特征提取机制的深入研究和创新的DWR模块和SIR模块的提出这种方法使得网络能够更灵活地适应不同尺度的特征,从而更准确地识别和分割图像中的物体。DWRSeg的基本原理和框架,并且能够在你自己的网络结构中进行添加DWRSeg需要增加一定的计算量一个DWR模块大概增加0.4GFLOPsYOLOv11改进系列专栏——本专栏持续复习各种顶会内容——科研必备。

Snu77的博客 4188

Java读取properties配置文件的8种方式汇总

Properties 类位于 java.util.Properties中,是Java 语言的处理配置文件所使用的类,其中的xxx.Properties类主要用于集中的持久存储Java的配置文件内容,可以读取后缀是.properties和.cfg的配置文件。Properties类调用setProperty方法将键值对保存到内存中,此时可以通过getProperty方法读取,propertyNames方法进行遍历,但是并没有将键值对持久化到属性文件中,故需要调用store方法持久化键值对到属性文件中。

cuisidong1997的博客 3265

【毫米波混合波束成形】第3章 深度展开网络:将迭代优化嵌入计算图

相位提取算子 $P_\phi: \mathbb{C}^N \to \mathbb{C}^N$ 定义为逐元素相位归一化 $P_\phi(z) = \exp(j \cdot \angle z)$。该算子在复数域非全纯(Non-holomorphic),标准反向传播需扩展至Wirtinger微积分框架。对于复数变量 $z = x + jy$,Wirtinger导数定义:相位提取算子的Jacobian矩阵在极坐标下具有稀疏结构。

VectorShift的博客 407

Java读取properties配置文件工具包

与 load 方法相反,该方法将键 - 值对写入到指定的文件中去。java中的properties文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件,文件的内容是格式是 "键=值"的格式,在properties文件中,可以用"#"来作注释,properties文件在Java编程中用到的地方很多,操作很方便。通过对指定的文件(比如说上面的 test.properties 文件)进行装载来获取该文件中的所有键 - 值对。他通过调用基类的put方法来设置 键 - 值对。

Meryoufdd的博客 3748

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

java怎么读取properties文件、修改properties文件和封装properties

什么是Properties文件,Properties文件和XML一样是java中经常使用到的一种配置文件,读取和使用起来比较方便,并且可读性好。我们在编写代码的过程中为了将代码提高可参数化经常会将一些配置属性存放在我们的配置文件中,例如JDBC的URL、用户名、密码等甚至一些文件路径或者是一些常用的参数。这样我们当数据库发生改变的时候就不需要改原有的代码了。 Properties文件的特点就是Ke...

柳轻声的博客 2694

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Java读取Properties文件的六种方法

使用J2SE API读取Properties文件的六种方法1。使用java.util.Properties类的load()方法示例: InputStream in = lnew BufferedInputStream(new FileInputStream(name));Properties p = new Properties();p.load(in);2。使用java.util.Resou...

小宝 3361

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Java中读取properties文件

JAVA中读取properties文件 Java读取properties 配置文件的几种方式 介绍几种读取方式: db.properties文件 driverClassName=com.mysql.cj.jdbc.Driver url=jdbc:mysql://localhost:3306/jdbcdemo?serverTimezone=GMT%2B8 user=root user=root 1...

qq_37586652的博客 921

如何读取Java中properties文件的数据

如何读取Java中properties文件的数据 Properties类 想要读取properties文件的数据,首先需要知道Properties类(java.util.Properties),该类是Hashtable的一个子类;此外,从源代码的前几行注释可知,该properties类代表一个持久型属性集,该属性可以被保存到一个流中(inputStream,FileInputStream …),或者是从流中加载,属性列表中的每个键及其对应的值都是一个字符串: /** * The {@code Proper

qq_40898875的博客 1939

Java 读取 Properties 文件

案例一 主要使用了spring-core-4.1.4.RELEASE-sources.jar 这个jar包里的 PropertiesLoaderUtils.loadProperties 方法。不说了,直接上代码: package cn.lyj.util; import java.util.HashMap; import java.util.Map; import java.u...

小半的博客 2262

Java读取properties文件

Java读取properties文件 properties 基本知识 xxx.properties文件是一个文本文件,用于程序的属性配置。其语法包含注释和属性配置。 注释:在内容前加# 属性配置:采用“key=value”的形式书写。 properties文件的一个属性配置信息值可以换行,但键不可以换行。值换行用“\”表示。  properties的属性配置键值前后的空格在解析

army的专栏 1545

java读取properties文件_java读取properties文件的几种方法

一、项目中经常会需要读取配置文件(properties文件),因此读取方法总结如下:1、通过java.util.Properties读取1 Properties p=newProperties();2 //p需要InputStream对象进行读取文件,而获取InputStream有多种方法:3 //1、通过绝对路径:InputStream is=new FileInputStream(filePa...

weixin_33249310的博客 3968

JAVA按顺序读取properties文件

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 加粗样式 欢...

csdnwcy的博客 1463

java读取properties key_java读取properties配置文件

目录结构package com.wish.config;import java.io.*;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Properties;/*** @Author: lfyu* @DateTime: 2020-06-15 10:37* @Proje...

weixin_32110907的博客 480

Java读取properties配置文件工具类

Java读取properties配置文件的方式 一.背景 Java读取 properties 配置文件的方式,主要是通过 getProperty() 方法。config.properties 文件中有诸如 config.a = xxx 这样的存储形式,下面代码是读取 properties 配置文件中参数数据到 String 类型变量中。 二.代码 // 新建一个拥有 config.properti...

abcnull 的博客 2017
上一篇: Mysql:This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery' 错误解决
下一篇: Spring3中定时器的配置使用之Quartz
Java_Mr_Zheng
博客等级 码龄11年 18粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值