java 遍历属性文件路径_Java项目中读取properties文件,以及六种获取路径的方法...

Java读取properties文件的方法比较多,网上最多的文章是"Java读取properties文件的六种方法",但在Java应用中,最常用还是通过java.lang.Class类的getResourceAsStream(String name) 方法来实现,但我见到众多读取properties文件的代码中,都会这么干:

InputStream in = getClass().getResourceAsStream("资源Name");

这里面有个问题,就是getClass()调用的时候默认省略了this!我们都知道,this是不能在static(静态)方法或者static块中使用的,原因是static类型的方法或者代码块是属于类本身的,不属于某个对象,而this本身就代表当前对象,而静态方法或者块调用的时候是不用初始化对象的。

问题是:假如我不想让某个类有对象,那么我会将此类的默认构造方法设为私有,当然也不会写别的共有的构造方法。并且我这个类是工具类,都是静态的方法和变量,我要在静态块或者静态方法中获取properties文件,这个方法就行不通了。

那怎么办呢?其实这个类就不是这么用的,他仅仅是需要获取一个Class对象就可以了,那还不容易啊--取所有类的父类Object,用Object.class难道不比你的用你正在写类自身方便安全吗 ?呵呵,下面给出一个例子,以方便交流。

import java.util.Properties;

import java.io.InputStream;

import java.io.IOException;

/**

* 读取Properties文件的例子

* File: TestProperties.java

* User: leizhimin

* Date: 2008-2-15 18:38:40

*/

public final class TestProperties {

private static String param1;

private static String param2;

static {

Properties prop = new Properties();

InputStream in = Object.class.getResourceAsStream("/test.properties");

try {

prop.load(in);

param1 = prop.getProperty("initYears1").trim();

param2 = prop.getProperty("initYears2").trim();

} catch (IOException e) {

e.printStackTrace();

}

}

/**

* 私有构造方法,不需要创建对象

*/

private TestProperties() {

}

public static String getParam1() {

return param1;

}

public static String getParam2() {

return param2;

}

public static void main(String args[]){

System.out.println(getParam1());

System.out.println(getParam2());

}

}

运行结果:

151

152

Process finished with exit code 0

当然,把Object.class换成int.class照样行,呵呵,大家可以试试。

另外,如果是static方法或块中读取Properties文件,还有一种最保险的方法,就是这个类的本身名字来直接获取Class对象,比如本例中可写成TestProperties.class,这样做是最保险的方法

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

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

相关文章

前端周报:前端面试题及答案总结;JavaScript参数传递的深入理解

1、2017前端面试题及答案总结 |掘金技术征文 "金三银四,金九银十",用来形容求职最好的几个月。但是随着行业的饱和,初中级前端er就业形势不容乐观。 行业状态不可控,我们能做的当然只是让自己变得更加具有竞争力。 今年…

python二级考试真题_全国BIM技能等级考试真题全套(一/二级,全专业,28套)

BIM技能等级考试即将到来,你准备好了吗?今日为大家整理了一套网友上传的BIM等级考试全套真题,供大家学习参考~BIM一级真题解析课程限免:(点我)全国BIM技能等级考试真题解析(一级)仅限6月5日一天免费第一期全国BIM技能等级考试一级…

java frame清除控件_java – 清除JFrame的组件并添加新组件

我有一个JFrame,它有一些选项.当按下OK按钮时,我想要相同的JFrame清除内容并添加新内容.我试过了,但问题是新的JFrame被弹出.我究竟做错了什么?import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.IOExcept…

Awk使用方法简介

AWK AWK简介:awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入, 以空格为默认分隔符将每行切片…

矩形波如何傅立叶展开_金科文化会不会连续拉板?两位同学展开激辩

【编者按:金科文化是我们昨晚理论上留下的两道作业题之一,要求同学们根据课程内容,判断一下它是否符合连板青云的条件?后市如何预判?操作计划怎么制定?今天,很多同学就此展开了分析和讨论。今晚…

java web 不用框架_MyShop-不用框架的基础javaweb项目

javaweb基础开发Servletjspmysqlhtmlcssjs(找一个前端模板,一大堆html,自己写的没有模板的美观)数据库设计来一个最基础的用户表drop table ifexists myshop_user;create table myshop_user(USER_ID varchar(32) not null,USER_NAME varchar(20) not null,USER_PASS…

程序包管理器控制台 Add-Migration 用法

需要注意的是: 1.任何对数据库的操作都在代码和程序包管理控制台完成,千万不要自己去修改数据库,no! 2.ef中创建数据库的表必须要有主键~!否则 就不让你成功~ 现在来说如何映射 第一步创建在代码model中创建类 第二步 …

ipad如何连接电脑_电脑无法连接外网远程调试,一文教你如何用手机让台式机连接外网...

在弱电施工中,设备调试是一个很重要的环节,施工这么久就是为了实现弱电各系统的功能,调试是每一个弱电人系必需会的技能,也是检验你结合能力一种体现。在调试中会遇到各种你想不到的问题,当遇到问题时,你应…

java 多线程两种方式_JAVA多线程实现的两种方式

java多线程实现方式主要有两种:继承Thread类、实现Runnable接口1、继承Thread类实现多线程继承Thread类的方法尽管被我列为一种多线程实现方式,但Thread本质上也是实现了Runnable接口的一个实例,它代表一个线程的实例,并且&#x…

CAN总线学习资料

CAN总线呕心沥血教程 https://wenku.baidu.com/view/486647f47c1cfad6195fa794.html转载于:https://www.cnblogs.com/codecamel/p/7605480.html

安卓手机浏览器排行_安卓手机性能排行榜:国产手机集体“出位”,华为却在角落哭泣?...

华为手机的芯片一直都坚称是国产的骄傲,但是现在的华为芯片出现了一系列的问题,甚至有人预言在今年九月份之后,华为就不再会获得台积电的芯片供应了。这样,对华为来说无疑是不好的势头,而且芯片刚被市场认可&#xff0…

python os.access_os.access(path, mode)

os.access(path, mode)描述 (Description)方法access()使用真实的uid/gid来测试对路径的访问。 大多数操作都将使用有效的uid/gid,因此可以在suid/sgid环境中使用此例程来测试调用用户是否具有对path的指定访问权限。如果允许访问,则返回True&#xff0c…

HDnoip2017题解

那么,作为一名初入信息竞赛的选手,我也试着开始用博客记录自己的学习历程,那么这篇文章先简单介绍一下我自己吧。 本人开始学习信息学大概以来,主要都是用的C,所以对其他语言并不是十分熟悉。2016我还只是一名NOIP普及…

_Linux结束进程到底有多少种方法?

请关注本头条号,每天坚持更新原创干货技术文章。如需学习视频,请在微信搜索公众号“智传网优”直接开始自助视频学习。1. 前言我们经常在Linux里使用kill命令来结束某后台进程。但kill命令实际上是向进程发送信号,并且有多种信号。终止运行一…

svg mysql_SVG 实例

SVG 实例简单的 SVG 实例一个简单的SVG图形例子:这里是SVG文件(SVG文件的保存与SVG扩展):/p>"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">stroke-width"2" fill"red" />SVG 代码解析:第一行…

Failed to import pydot

在使用keras进行模型绘制的时候,出现了一个错误 Failed to import pydot. You must install pydot and graphviz for pydotprint to work. 下面是解决方案,使用命令sudo apt-get install graphviz,将graphviz安装在系统环境下,不要…

mulitpartfile怎么接收不到值_光端机电源正常,但是运行不了怎么办?

光端机,是光信号传输的终端设备,在安防领域有很好的应用。伴随着监控的发展,视频光端机就是把1路到多路的模拟视频信号通过各种编码转换成光信号通过光纤介质来传输的设备分,分为模拟光端机和数字光端机。其中,光传输系…

java as操作_java 对类型的基本操作小结

1.json 字符串转换成对象SyncCarriageStatusDTO dto JSON.parseObject(value,SyncCarriageStatusDTO.class);List pparams JSON.parseObject(dto.getData(),new TypeReference>() {});2.对象转换成字符串对象String data JSON.toJSONString(pkg);2.枚举字符串转换成枚举类…

aes 加密_结合RSA与AES实现前后端加密通信

结合RSA与AES实现前后端加密通信一、思路使用RSA秘钥生成工具生成一对公钥(A)和私钥(B),前端保留A,后端保留B。前端发送数据时,先生成一串随机16位字符串作为AES的秘钥(C),然后使用A使用RSA算法对C进行加密,得到加密后…

cxf java调用.net_CXF在项目中的真实运用--WS访问客户端编写[java、.net]

一、首先,CXF的WS实现类由于实现了和Spring的无缝集成,因此可以采用Spring的单元测试来测试基本功能。代码如下:[java]package com.defshare.sy.test.biz;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import…