java web中读取properties文件时的路径问题
在web开发时,难免会有一些固定的参数,我们一般把这些固定的参数存在properties文件中,然后用的时候要读出来。但经常出现一些错误,找不到相应的路径,所以,今天特地讲一些如何正确获得路径。
首先,我们要将properties文件部署在$app/WEB-INF/classes文件夹里,比如将info.properties文件放在dingding这个web应用下时,该文件所在的路径为$dingding/WEB-INF/classes/info.properties。
然后读取的时候分为两种情况读取:
(一)在Servlet类中的读取
有两种读取方式:
1.直接将properties文件读入的流中
- InputStream in = request.getServletContext().getResourceAsStream("/WEB-INF/classes/info.properties");
- Properties prop = new Properties();
- prop.load(in);
- prop.getProperty("username");
2.获得properties文件的路径,然后在用流读出
- String path = request.getServletContext().getRealPath("/WEB-INF/classes/info.properties");
- FileInputStream in = new FileInputStream(path);
- Properties prop = new Properties();
- prop.load(in);
- prop.getProperty("username");
推荐第二种方法,易于理解。
(二)在非Servlet类中(普通java类中)的读取
也有两种读取方式:
1.直接将文件装载到内存中
- InputStream in = Demo.class.getClassLoader().getResourceAsStream("db.properties");
- Properties prop = new Properties();
- prop.load(in);
- prop.getProperty("username");
但存在一些缺陷:类装载器加载内容时,会先查找内存中是否已经存在相应的内容,如果有就不再加载直接使用内存中的,所以此方法,第一次加载后,如果文件内容有变动,第二次加载后还是原来的内容,无法加载修改后的内容。下边的方法取文件的绝对路径来加载不会有这种问题。
2.读取到文件的路径,然后用流读出
- String path = Demo.class.getClassLoader().getResource("info.properties").getPath();
- FileInputStream in = new FileInputStream(path);
- Properties prop = new Properties();
- prop.load(in);
- prop.getProperty("username");
上面在使用FileInputStream时传入的都是绝对路径,也可以使用相对路径:
普通java工程:是相对于当前类的所在路径
web工程:是相对于$tomcat/bin ($tomcat为tomcat的路径名)
来源:http://blog.csdn.net/jeryjeryjery/article/details/53257921
java web中读取properties文件时的路径问题的更多相关文章
- Java项目中读取properties文件,以及六种获取路径的方法
下面1-4的内容是网上收集的相关知识,总结来说,就是如下几个知识点: 最常用读取properties文件的方法 InputStream in = getClass().getResourceAsStr ...
- java项目中读取properties文件
这里的配置文件都放在src下面, System.properties的内容 exceptionMapping=exceptionMapping.properties config=config.pro ...
- 五种方式让你在java中读取properties文件内容不再是难题
一.背景 最近,在项目开发的过程中,遇到需要在properties文件中定义一些自定义的变量,以供java程序动态的读取,修改变量,不再需要修改代码的问题.就借此机会把Spring+SpringMVC ...
- 如何在java类中读取Properties配置文件
在com.example包下有一个test.properties文件和测试类PropertyReadTest.java. test.properties 文件内容: author=zeige tea ...
- spring使用@Value注解读取.properties文件时出现中文乱码问题的解决
解决办法 在spring中我们常常使用.properties对一些属性进行一个提前配置, spring 在读取*.properties文件时, 默认使用的是asci码, 这时 我们需要对其编码进行转换 ...
- java web 中 读取windows图标并显示
java web中读取windows对应文件名的 系统图标 ....显示 1.获取系统图标工具类 package utils; import java.awt.Graphics; import j ...
- Java 读取Properties文件时应注意的路径问题
1. 使用Class的getResourceAsStream()方法读取Properties文件(资源文件)的路径问题: InputStream in = this.getClass().getRe ...
- 分别用Java和JS读取Properties文件内容
项目中经常用到的配置文件,除了XML文件之外,还会用到Properties文件来存储一些信息,例如国际化的设置.jdbc连接信息的配置等.有时候也会把一些路径或者sql语句放到Properties中, ...
- Java/JavaWeb中读取资源文件
1.一般工程中使用I/O类指定文件的绝对路径读取 FileInputStream fis = new FileInputStream("src/main/resources/zsm.prop ...
随机推荐
- 工作总结 public DateTime? CollectionTime 可空类型 Code First
数据库生成就对应生成 可以为空 的字段
- 计算机科学基础知识(一)The Memory Hierarchy
一.前言 最近一个问题经常萦绕在我的脑海:一个学习电子工程的机械师如何称为优秀的程序员?(注:本文作者本科学习机械设计,研究生转到电子工程系学习,毕业后却选择了系统程序员这样的职业).经过思考,我认为 ...
- Linux中网络通信中 使用的结构体
"+++++++++++++++++++++++++ Linux TCP/UDP通信中的结构体 +++++++++++++++++++++++++++++++++++++++" s ...
- iOS9中怎样在日历App中创建一个随意时间之前開始的提醒(三)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 假设认为写的不好请多提意见,假设认为不错请多多支持点赞.谢谢! hopy ;) 四.创建随意时间之前開始的提醒 如今我们找到了指定源中的指定日 ...
- introduction to python for statistics,analysis笔记2
一.行列式连接concatenate函数,axis=0是垂直拼接,axis=1是水平拼接 x=np.array([[],[,]]); y=np.array([[],[,]]); z=np.concat ...
- Verilog学习笔记
作者:桂. 时间:2017-06-24 11:07:40 链接:http://www.cnblogs.com/xingshansi/p/7039237.html 前言 Verilog是硬件描述语言, ...
- unity3d prefab
用prefab创建的实例,其position/rotation/scale并不会随prefab的position/rotation/scale修改而更新,其它属性才会. 不过如果prefab的某个实例 ...
- VC++学习之多线程(2)
创建一个线程,自然有一个对应的系统API来完毕.CreateThread这个函数就用来创建线程的. 各种參数的用途我就不多说了,这里直接贴一个我自己练习的样例 1.以下是一个创建一个线程的样例,当然, ...
- log4net 存储到oracle 调试 Could not load type [log4net.Appender.OracleAppender]
近期在弄webfrom oracle 调用 log4net 開始调试时不出数据,打开了log4net 自己的debug功能后发现: log4net: Logger [root] level set t ...
- Linux系统中 Sublime Text 中文 GBK 文件乱码问题
Sublime Text 是一个很不错编辑器,具有漂亮的界面和强大的功能.再加上丰富的插件,而且还跨平台,绝对是一款实打实的神器啊! 众所周知,Sublime Text 对中文支持的极差,可以说几乎就 ...