java读取properties文件_java读取properties文件的几种方法
一、项目中经常会需要读取配置文件(properties文件),因此读取方法总结如下:
1、通过java.util.Properties读取
1 Properties p=newProperties();2 //p需要InputStream对象进行读取文件,而获取InputStream有多种方法:3 //1、通过绝对路径:InputStream is=new FileInputStream(filePath);4 //2、通过Class.getResourceAsStream(path);5 //3、通过ClassLoader.getResourceAsStream(path);
6 p.load(InputStream is);7 is.close();8 p.getString(String(key))
2、通过java.util.ResourceBundle读取
ResourceBundle rb=ResourceBundle.getBundle(packageName);
rb.getString(String key);
二、Class.getResourceAsStream与ClassLoader.getResourceAsStream的区别
首先,Java中的getResourceAsStream有以下几种:
1. Class.getResourceAsStream(String path) : path 不以’/'开头时默认是从此类所在的包下取资源,以’/'开头则是从ClassPath根下获取。其只是通过path构造一个绝对路径,最终还是由 ClassLoader获取资源。
2. Class.getClassLoader.getResourceAsStream(String path) :默认则是从ClassPath根下获取,path不能以’/'开头,最终是由ClassLoader获取资源。
3. ServletContext. getResourceAsStream(String path):默认从WebAPP根目录下取资源,Tomcat下path是否以’/'开头无所谓,当然这和具体的容器实现有关。
4. Jsp下的application内置对象就是上面的ServletContext的一种实现。
其次,getResourceAsStream 用法大致有以下几种:
第一: 要加载的文件和.class文件在同一目录下,例如:com.x.y 下有类me.class ,同时有资源文件myfile.xml
那么,应该有如下代码:
me.class.getResourceAsStream("myfile.xml");
第二:在me.class目录的子目录下,例如:com.x.y 下有类me.class ,同时在 com.x.y.file 目录下有资源文件myfile.xml
那么,应该有如下代码:
me.class.getResourceAsStream("file/myfile.xml");
第三:不在me.class目录下,也不在子目录下,例如:com.x.y 下有类me.class ,同时在 com.x.file 目录下有资源文件myfile.xml
那么,应该有如下代码:
me.class.getResourceAsStream("/com/x/file/myfile.xml");
总结一下,可能只是两种写法
第一:前面有 “ / ”
“ / ”代表了工程的根目录,例如工程名叫做myproject,“ / ”代表了myproject
me.class.getResourceAsStream("/com/x/file/myfile.xml");
第二:前面没有 “ / ”
代表当前类的目录
me.class.getResourceAsStream("myfile.xml");
me.class.getResourceAsStream("file/myfile.xml");
最后,自己的理解:
getResourceAsStream读取的文件路径只局限与工程的源文件夹中,包括在工程src根目录下,以及类包里面任何位置,但是如果配置文件路径是在除了源文件夹之外的其他文件夹中时,该方法是用不了的。
错误:
class.getClassLoader().getResource("*********");这一句抛出空指针异常java.lang.NullPointerException,定位为getClassLoader()返回null
如果一个类是通过bootstrap 载入的,那我们通过这个类去获得classloader的话,有些jdk的实现是会返回一个null的,
解决:
修改代码如下:
InputStream inputStream;
ClassLoader cl= XXX. class.getClassLoader();if (cl != null) {
inputStream= cl.getResourceAsStream( "xx.properties");
}else{
inputStream= ClassLoader.getSystemResourceAsStream( "xx.properties");
}
Properties dbProps= newProperties();
dbProps.load(inputStream);
inputStream.close();
所以保险起见我们最好还是使用我们自己写的类来获取classloader,这样一来就不会有问题。
java读取properties文件_java读取properties文件的几种方法相关推荐
- java list初始化数据_Java中初始化List的5种方法 /List的2种去重方式
前言 List是java重要的数据结构之一,我们经常接触到的有ArrayList.Vector和LinkedList三种,他们都继承来自java.util.Collection接口,类图如下: 1.构 ...
- java 图片 白边_java 去除图片白边 两种方法的比较
swt 下的图片处理: ImageData ideaImageData = new ImageData(path); ideaImageData = getWhite(ideaImageData); ...
- java 取随机整数_Java获取随机整数的两种方法
方式一: 使用 Random 类 举例:获取 0~3 范围内(包括 0 和 3 )的 int 类型的随机数 Random random = new Random(); System.out.print ...
- java中比较两个文件的大小_Java实现获取文件大小的几种方法
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 目前Java获取文件大小的方法有两种: 1.通过file的length()方法获取: 2.通过流式方法获取: 通过流式方法又有两种,分别是旧的java.i ...
- java获取文件大小_Java实现获取文件大小的几种方法
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 目前Java获取文件大小的方法有两种: 1.通过file的length()方法获取: 2.通过流式方法获取: 通过流式方法又有两种,分别是旧的java.i ...
- 用python修改文件内容修改txt内容的3种方法
用python修改文件内容修改txt内容的3种方法 方法一.修改原文件方式 def updateFile(file,old_str,new_str):"""替换文件中的字 ...
- 多个PDF文件如何合并成一个?两种方法轻松get
在日常学习生活中,如果你需要将多个文档整合为一个完整的文件,比如说多篇文章.多张图片.多个表格等等,这时候就需要将这些文档合并成一个PDF文件.如何将多个PDF文件如何合并成一个?两种方法轻松帮你搞定 ...
- attrib批量显示文件夹_电脑中病毒,文件夹全部变成快捷方式?3种方法轻松解决!...
原标题:电脑中病毒,文件夹全部变成快捷方式?3种方法轻松解决! 最近有位朋友去打印店的时候,u盘一不小心就带回了1KB快捷方式病毒,导致电脑u盘里的文件以及文件夹全部变成了快捷方式,不知道如何解决. ...
- 剪切的文件丢失如何找回?这四种方法可试
剪切文件相当于在设备中进行文件删除,而一旦剪切过程中出现错误就容易造成源文件丢失.那么剪切文件丢失如何恢复?下面将分享剪切丢失文件恢复的方法,均以win10系统为例进行操作. ▌第一种方法:撤销移动 ...
- amr文件怎么转换成mp3,5种方法供你选择
amr文件怎么转换成mp3?如果你常常使用手机录音或下载手机铃声,那么AMR格式对你来说一定不会陌生.因为amr文件的资源占用率低.传输方便,通常用作各大手机厂商广泛使用的一种保存录音文件的格式,非常 ...
最新文章
- Go 学习笔记(57)— Go 第三方库之 amqp (RabbitMQ 生产者、消费者整个流程)
- python merge很费内存吗,python如何使用merge实现堆
- linux:配置jdk环境变量
- Annotation注解(有源代码)
- 区块链BaaS云服务(14)华大BGI区块链“概论“
- Mac OS X 安装教程
- 嵌入式实时系统程序开发一:按键程序编写
- 日志文件在VS中输出为乱码问题
- 〖Linux〗Kubuntu设置打开应用时就只在打开时的工作区显示
- 对数周期天线hfss建模_HFSS也有金手指,FADDM招式详解
- java入门基础重要知识必考考点
- 如何使用迅雷下载电骡的资源
- mysql windows下连接linux下的mysql
- c++ 链表快速查找
- CSS 小技巧:如何保留 hover 的状态?
- excel学习-选择性粘贴(转置+跳过空白单元格+运算)
- biostar handbook(十一)|基因组变异的表示形式
- python查看微信撤回消息_Python查看微信撤回消息代码
- W10应用商店Microsoft Store的安装
- 查看caj文件与chm文件
热门文章
- 伤仲永 - 公司人才培养感悟
- Java基础编程题目——接口应用,display()函数显示消息
- 无人机图像语义分割数据集(aeroscapes数据集)使用方法
- Windows误操作删除或取消Authenticated Users所有权限如何补救
- python中pylint使用方法(pylint代码检查)
- 1.1 一元线性回归分析案例
- 被讨厌的勇气:目的论
- render_template
- Android 11源码——安全策略SELinux关闭
- ubuntu关闭色linux防火墙,ubantu 14 关闭防火墙 SELinux