下面1-4的内容是网上收集的相关知识,总结来说,就是如下几个知识点:

  1. 最常用读取properties文件的方法
  2. InputStream in = getClass().getResourceAsStream("资源Name");这种方式要求properties文件和当前类在同一文件夹下面。如果在不同的包中,必须使用:
  3. InputStream ins = this.getClass().getResourceAsStream("/cn/zhao/properties/testPropertiesPath2.properties");
  4. Java中获取路径方法
  5. 获取路径的一个简单实现
  6. 反射方式获取properties文件的三种方式

1 反射方式获取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难道不比你的用你正在写类自身方便安全吗 ?呵呵,下面给出一个例子,以方便交流。

  1. import  java.util.Properties;
  2. import  java.io.InputStream;
  3. import  java.io.IOException;
  4. /**
  5. * 读取Properties文件的例子
  6. * File: TestProperties.java
  7. * User: leizhimin
  8. * Date: 2008-2-15 18:38:40
  9. */
  10. public   final   class  TestProperties {
  11. private   static  String param1;
  12. private   static  String param2;
  13. static  {
  14. Properties prop =  new  Properties();
  15. InputStream in = Object. class .getResourceAsStream( "/test.properties" );
  16. try  {
  17. prop.load(in);
  18. param1 = prop.getProperty( "initYears1" ).trim();
  19. param2 = prop.getProperty( "initYears2" ).trim();
  20. }  catch  (IOException e) {
  21. e.printStackTrace();
  22. }
  23. }
  24. /**
  25. * 私有构造方法,不需要创建对象
  26. */
  27. private  TestProperties() {
  28. }
  29. public   static  String getParam1() {
  30. return  param1;
  31. }
  32. public   static  String getParam2() {
  33. return  param2;
  34. }
  35. public   static   void  main(String args[]){
  36. System.out.println(getParam1());
  37. System.out.println(getParam2());
  38. }
  39. }
  40. 运行结果:
  41. 151
  42. 152

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

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

2 获取路径的方式:

  1. File fileB = new File( this .getClass().getResource( "" ).getPath());
  2. System. out .println( "fileB path: " + fileB);

2.2获取当前类所在的工程名:

  1. System. out .println("user.dir path: " + System. getProperty ("user.dir"))<span style="background-color: white;">3 获取路径的一个简单的Java实现</span>
  1. /**
  2. *获取项目的相对路径下文件的绝对路径
  3. *
  4. * @param parentDir
  5. *目标文件的父目录,例如说,工程的目录下,有lib与bin和conf目录,那么程序运行于lib or
  6. * bin,那么需要的配置文件却是conf里面,则需要找到该配置文件的绝对路径
  7. * @param fileName
  8. *文件名
  9. * @return一个绝对路径
  10. */
  11. public static String getPath(String parentDir, String fileName) {
  12. String path = null;
  13. String userdir = System.getProperty("user.dir");
  14. String userdirName = new File(userdir).getName();
  15. if (userdirName.equalsIgnoreCase("lib")
  16. || userdirName.equalsIgnoreCase("bin")) {
  17. File newf = new File(userdir);
  18. File newp = new File(newf.getParent());
  19. if (fileName.trim().equals("")) {
  20. path = newp.getPath() + File.separator + parentDir;
  21. } else {
  22. path = newp.getPath() + File.separator + parentDir
  23. + File.separator + fileName;
  24. }
  25. } else {
  26. if (fileName.trim().equals("")) {
  27. path = userdir + File.separator + parentDir;
  28. } else {
  29. path = userdir + File.separator + parentDir + File.separator
  30. + fileName;
  31. }
  32. }
  33. return path;
  34. }

4 利用反射的方式获取路径:

  1. InputStream ips1 = Enumeration . class .getClassLoader() .getResourceAsStream( "cn/zhao/enumStudy/testPropertiesPath1.properties" );
  2. InputStream ips2 = Enumeration . class .getResourceAsStream( "testPropertiesPath1.properties" );
  3. InputStream ips3 = Enumeration . class .getResourceAsStream( "properties/testPropertiesPath2.properties" );

Java项目中读取properties文件相关推荐

  1. Java项目中读取properties文件,以及六种获取路径的方法

    下面1-4的内容是网上收集的相关知识,总结来说,就是如下几个知识点: 最常用读取properties文件的方法 InputStream in = getClass().getResourceAsStr ...

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

    Java读取properties文件的方法比较多,网上最多的文章是"Java读取properties文件的六种方法",但在Java应用中,最常用还是通过java.lang.Clas ...

  3. java web中读取properties文件时的路径问题

    在web开发时,难免会有一些固定的参数,我们一般把这些固定的参数存在properties文件中,然后用的时候要读出来.但经常出现一些错误,找不到相应的路径,所以,今天特地讲一些如何正确获得路径. 首先 ...

  4. java中读取properties文件内容五种方式

    一.背景 最近,在项目开发的过程中,遇到需要在properties文件中定义一些自定义的变量,以供java程序动态的读取,修改变量,不再需要修改代码的问题.就借此机会把Spring+SpringMVC ...

  5. 五种方式让你在java中读取properties文件内容不再是难题

    2019独角兽企业重金招聘Python工程师标准>>> 方式1.通过context:property-placeholder加载配置文件jdbc.properties中的内容 < ...

  6. java项目——Dom4j读取XML文件连接orecal数据库

    Dom4j介绍:           dom4j是一个简单的开源库,用于处理XML. XPath和XSLT,它基于Java平台,使用Java的集合框架,全面集 成了DOM,SAX和JAXP.在国内比较 ...

  7. java项目——Dom4j读取XML文件保存orecal数据库

    上一篇介绍了如何利用dom4j读取xml文件,连接数据库,换数据库的话直接修改XML文件,使配置更加灵 活,本篇博客主要介绍一下如何将XML文件导入到orecal数据库中. XML在现在的项目中的应用 ...

  8. 在JavaScript文件中读取properties文件的方法

    假设有JavaScript文件叫做:readproperties.js,这个文件需要读取config.properties这个配置文件,步骤如下: 1.  下载插件jquery.i18n.proper ...

  9. android中读取properties文件

    我们创建一个properties的文件:test.properties user=huitao 我们把test.properties放到assets下面: java代码中取值: public stat ...

最新文章

  1. Object-C与Swift混合开发
  2. Android开发之Serializable 和 Parcelable的区别(源代码分享)
  3. 在ubuntu 14.04 编译android 2.3.1 错误解决办法
  4. python3.6打包成exe可执行文件、已解决方案_Python 3.6打包成EXE可执行程序的实现...
  5. python-opencv图像处理之SURF函数
  6. simulink将值传递给mask封装下的模块
  7. ios 进入后台 一段时间在进入前台 动画消失
  8. 桌面程序 取色器 colors.exe
  9. 超低功耗MCU如何降低功耗
  10. 【Unity】Jay 开发日志(五)——主菜单的创建
  11. HDU 4489(DP)
  12. Flask 框架(四)— 表单处理
  13. AutoJs 4.1.1 实战教程、Hamibot
  14. Not allowed to access normals on mesh ‘Combined Mesh (root: scene)‘ (isReadable is false...报错解决方法
  15. 12. Spring Boot统一日志框架
  16. 双指针算法及模板应用
  17. 深度网络的训练经验总结(参数篇)
  18. SQL Server之查询检索操作
  19. 减少存储过程封装业务逻辑-web开发与传统软件开发的思维模式不同
  20. 申请iso27000认证是什么认证?

热门文章

  1. 2017,互联网出海应该注意哪些问题?
  2. Android 自定义下拉框的实现 Spinner
  3. CentOS GRUB引导错误无法进入系统解决办法
  4. Windows Azure 云计算服务: 怎样按需选择并计算它将花费多少钱呢?
  5. SQL Server2005 日期字段与字符串比较的怪异问题
  6. 因情制宜,建立“适当”的索引
  7. “机密蔓延”成软件供应链安全的梦魇
  8. 被投毒的管道:研究员探索CI环境中的攻击方法
  9. ProxyToken:微软 Exchange 服务器中的认证绕过新漏洞,可窃取用户邮件
  10. HackerOne 公布十大漏洞奖励计划“豪门”