Java项目中读取properties文件,以及六种获取路径的方法
下面1-4的内容是网上收集的相关知识,总结来说,就是如下几个知识点:
- 最常用读取properties文件的方法
 - InputStream in = getClass().getResourceAsStream("资源Name");这种方式要求properties文件和当前类在同一文件夹下面。如果在不同的包中,必须使用:
 - InputStream ins = this.getClass().getResourceAsStream("/cn/zhao/properties/testPropertiesPath2.properties");
 - Java中获取路径方法
 - 获取路径的一个简单实现
 - 反射方式获取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难道不比你的用你正在写类自身方便安全吗 ?呵呵,下面给出一个例子,以方便交流。 import java.util.Properties;  /**  static {  /**  public static String getParam1() {  public static String getParam2() {  public static void main(String args[]){  运行结果: 151  Process finished with exit code 0 当然,把Object.class换成int.class照样行,呵呵,大家可以试试。 另外,如果是static方法或块中读取Properties文件,还有一种最保险的方法,就是这个类的本身名字来直接获取Class对象,比如本例中可写成TestProperties.class,这样做是最保险的方法  | 
2 获取路径的方式:
| 
 2.1 获取当前类所在的包: File fileB = new File(this.getClass().getResource("").getPath()); System.out.println("fileB path: " + fileB); 2.2 获取当前类所在的工程名: System.out.println("user.dir path: " + System.getProperty("user.dir"));  | 
3 获取路径的一个简单的Java实现:
| 
 /** * 获取项目的相对路径下文件的绝对路径 * * @param parentDir * 目标文件的父目录,例如说,工程的目录下,有lib与bin和conf目录,那么程序运行于lib or * bin,那么需要的配置文件却是conf里面,则需要找到该配置文件的绝对路径 * @param fileName * 文件名 * @return 一个绝对路径 */ public static String getPath(String parentDir, String fileName) { String path = null; String userdir = System.getProperty("user.dir"); String userdirName = new File(userdir).getName(); if (userdirName.equalsIgnoreCase("lib") || userdirName.equalsIgnoreCase("bin")) { File newf = new File(userdir); File newp = new File(newf.getParent()); if (fileName.trim().equals("")) { path = newp.getPath() + File.separator + parentDir; } else { path = newp.getPath() + File.separator + parentDir + File.separator + fileName; } } else { if (fileName.trim().equals("")) { path = userdir + File.separator + parentDir; } else { path = userdir + File.separator + parentDir + File.separator + fileName; } } return path; }  | 
4 利用反射的方式获取路径:
| 
 InputStream ips1 = Enumeration.class.getClassLoader() .getResourceAsStream("cn/zhao/enumStudy/testPropertiesPath1.properties"); InputStream ips2 = Enumeration.class.getResourceAsStream("testPropertiesPath1.properties"); InputStream ips3 = Enumeration.class.getResourceAsStream("properties/testPropertiesPath2.properties");  | 
Java项目中读取properties文件,以及六种获取路径的方法的更多相关文章
- java项目中读取properties文件
		
这里的配置文件都放在src下面, System.properties的内容 exceptionMapping=exceptionMapping.properties config=config.pro ...
 - java web中读取properties文件时的路径问题
		
在web开发时,难免会有一些固定的参数,我们一般把这些固定的参数存在properties文件中,然后用的时候要读出来.但经常出现一些错误,找不到相应的路径,所以,今天特地讲一些如何正确获得路径. 首先 ...
 - Java在Web项目中读取properties文件
		
import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import ...
 - 五种方式让你在java中读取properties文件内容不再是难题
		
一.背景 最近,在项目开发的过程中,遇到需要在properties文件中定义一些自定义的变量,以供java程序动态的读取,修改变量,不再需要修改代码的问题.就借此机会把Spring+SpringMVC ...
 - Java读取Properties文件的六种方法
		
使用J2SE API读取Properties文件的六种方法 1.使用java.util.Properties类的load()方法示例: InputStream in = lnew BufferedIn ...
 - javaSE读取Properties文件的六种方法
		
使用JavaSEAPI读取Properties文件的六种方法 1.使用java.util.Properties类的load()方法 示例:InputStreamin=lnewBufferedInput ...
 - 如何在java类中读取Properties配置文件
		
在com.example包下有一个test.properties文件和测试类PropertyReadTest.java. test.properties 文件内容: author=zeige tea ...
 - Java项目中每一个类都可以有一个main方法
		
Java项目中每一个类都可以有一个main方法,但只有一个main方法会被执行,其他main方法可以对类进行单元测试. public class StaticTest { public static ...
 - 分别用Java和JS读取Properties文件内容
		
项目中经常用到的配置文件,除了XML文件之外,还会用到Properties文件来存储一些信息,例如国际化的设置.jdbc连接信息的配置等.有时候也会把一些路径或者sql语句放到Properties中, ...
 
随机推荐
- call  appiy
			
其实就是动态的改变this了,下面例子就说明了... function add(a, b){ console.dir(this); } function sub(a, b){ console.dir( ...
 - 王者荣耀交流协会第一次scrum会议
			
照片: 拍照的人是我(高远博),没有出镜.开会时间是17:00到17:37. 昨天的成绩: (1)优化了折线图界面 今天的计划: (1)小组成员汇报昨日成果. (2)小组成员继续推进任务. 遇到的困难 ...
 - Python:字符串中引用外部变量的3种方法
			
方法一: username=input('username:') age=input('age:') job=input('job:') salary=input('salary') info1='' ...
 - struts2--上传总结(限制大小和类型 非法上传的跳转)
			
网上有很多版本,鉴于实践出真知的态度 我自己探索了一番 struts版本:2.3.16 限制大小: struts2默认是2M 所以如果要扩大大小限制,应该先配一个全局struts2最大上限 <c ...
 - hdu1010--Tempter of the Bone(迷宫)
			
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=1010 Tempter of the Bone Time Limit: 2000/1000 MS (Jav ...
 - HDU 5187 zhx's contest 快速幂,快速加
			
题目链接: hdu: http://acm.hdu.edu.cn/showproblem.php?pid=5187 bc(中文): http://bestcoder.hdu.edu.cn/contes ...
 - Markdown的基本语法
			
Markdown 是一种轻量级的「标记语言」,它的优点很多,目前也被越来越多的写作爱好者,撰稿者广泛使用.看到这里请不要被「标记」.「语言」所迷惑,Markdown 的语法十分简单.常用的标记符号也不 ...
 - iOS- 如何建立索引实现本地文本搜索引擎,允许容错搜索?
			
1.前言 实现一个本地搜索引擎,允许容错搜索,也就是搜索结果不需要和搜索的关键字完全精准匹配.比如,搜索”eric wang“,搜索结果可以包括Erica Watts等等.搜索效率十分高. 这里我们需 ...
 - bzoj1031-字符加密
			
环的问题,经典方法倍长串,求出后缀数组,扫一次sa,如果sa[i]小于等于n,那么就输出这个字符串结尾的位置(即s[sa[i]+n-1]). 代码 #include<cstdio> #in ...
 - [六]SpringBoot 之 连接数据库(mybatis)
			
在进行配置之前首先要了解springboot是如何使用纯java代码方式初始化一个bean的 以前的版本是在xml中使用beans标签,在其里面配置bean,那么纯Java代码怎么实现呢? 答案就是使 ...