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,这样做是最保险的方法

java properties 路径问题_Java 读取Properties文件时应注意的路径问题相关推荐

  1. java读txt文件乱码_java读取txt文件时出现中文乱码怎么解决

    java读取txt文件时出现中文乱码怎么解决 发布时间:2020-06-25 15:27:31 来源:亿速云 阅读:105 作者:Leah java读取txt文件时出现中文乱码怎么解决?针对这个问题, ...

  2. java 存取xml数据_JAVA读取XML文件数据

    XML文档内容如下: title1 title2 title3 JAVA代码如下: package cn.mylucene; import java.io.File; import java.io.I ...

  3. java 读excel 流_Java 读取excel 文件流代码实例

    这篇文章主要介绍了Java 读取excel 文件流代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 代码如下public static voi ...

  4. java生成txt表格_java读取txt文件表格并生成新txt

    展开全部 可以使用java中的I/O流来读取文件并生产新文件,给你个代码例子:import java.io.BufferedReader; import java.io.File; import ja ...

  5. java 导入world数据_java读取world文件,把world文件中的内容,原样输出到页面上。...

    POI,处理可以.样式在Java代码中添加就可以.给了一个例子这个是Excel的.package cn.com.my.common; import java.io.File; import java. ...

  6. java read出错_java读取txt文件时,错误的把txt内容读取了两遍

    package标准化模拟考试;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.io.*;importjav ...

  7. java下mysql连接配置文件_Java读取.properties配置文件并连接数据库

    1.读取配置文件 //Properties集合 流对象读取键值对 public static void getNum() throws Exception { Properties p=new Pro ...

  8. java读取word文件并设置其字体样式_Java读取word文件,字体,颜色(示例代码)

    在Android读取Word文件时,在网上查看时可以用tm-extractors,但好像没有提到怎么读取Word文档中字体的颜色,字体,上下标等相关的属性.但由于需要,要把doc文档中的内容(字体,下 ...

  9. java中读取mp3文件_java读取mp3文件

    JMF实际上是Java的一个类包.JMF 2.1.1技术提供了先进的媒体处理能力,从而扩展了Java平台的功能.这些功能包括:媒体捕获.压缩.流转.回放,以及对各种主要媒体形式和编码的支 持,如M-J ...

最新文章

  1. 一文看尽各种 NLP 任务
  2. tyvj1305 最大子序和 【单调队列优化dp】
  3. wiki多个文件一起导入_wiki.js 使用 postgres 支持中文全文检索
  4. 【Python基础】Python 100 例带你入门
  5. QT学习:读写二进制文件
  6. Linux下怎么创建和进入带有空格的文件夹
  7. 如何删除eclipse多余的工作空间
  8. sklearn自学指南(part46)--新颖性和离群值检测方法概述
  9. 2015生命之旅---第二站长沙杭州
  10. 百度360之争的背后
  11. 括号匹配算法Java实现
  12. 按键精灵找图找色找字比色等图色命令失败的通用解决思路
  13. 微星网卡linux驱动,微星b360系列win10无法安装网卡驱动解决方法_武汉久龙电脑维修中心...
  14. 流计算及在特来电监控引擎中的实践
  15. arduino nano 简单点亮LED灯和实现串口时钟计时
  16. 20201009 Latex参考文献自动排序 \begin{thebibliography}
  17. mysql into loadfile_mysql load_file()和 into outfile
  18. 博客从CSDN搬至开源中国
  19. Windows系统下安装CVAT标注工具
  20. 博杰声学测试软件,音频分析仪 - Audio Precision 官方网站 - 声学和音频测试公认的标准...

热门文章

  1. VB6中如何使用C#开发的WebService进行开发
  2. js实现贪吃蛇小游戏
  3. java ajax 登陆验证,Spring Security4实例(Java config版)——ajax登录,自定义验证
  4. LeetCode Algorithm 202. 快乐数
  5. 【Hive】一次被分区条件和笛卡尔积制裁的经历
  6. 数塔 HDU - 2084
  7. 【机器视觉】 dev_set_color算子
  8. 什么用于创建python与数据库之间的链接_python3连接数据库用什么
  9. kotlin sealed 中_Kotlin sealed class
  10. Codeforces 845 C. Two TVs 思路:简单贪心算法