问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java web工程中读取properties文件,路径一直不知道怎么写

发布网友 发布时间:2022-04-27 11:16

我来回答

3个回答

热心网友 时间:2023-09-18 06:50

1. 使用java.lang.Class类的getResourceAsStream(String name)方法

InputStream in = getClass().getResourceAsStream("/config.properties");

在静态方法中,由于不能使用getClass()方法,必须写出类的名字。区别不大。

MyClass.class.getResourceAsStream("/config.properties");

使用这个方法,路径前面可以加斜杠也可以不加。根据Class类getResourceAsStream()方法的JavaDoc:

Finds a resource with a given name.  The rules for searching resources associated with a given class are implemented by the defining  class loader of the class.  This method delegates to this object's class loader.  If this object was loaded by the bootstrap class loader, the method delegates to ClassLoader.getSystemResourceAsStream.  

Before delegation, an absolute resource name is constructed from the given resource name using this algorithm:  

If the name begins with a '/' ('\u002f'), then the absolute name of the resource is the portion of the name following the '/'.  

Otherwise, the absolute name is of the following form:  

modified_package_name/name  

Where the modified_package_name is the package name of this object with '/' substituted for '.' ('\u002e'). 

就是说,这个path假如以斜杠开头,则斜杠后面的部分是文件相对classpath的路径;假如不是,Java会把这个path看作是“包名/文件名”的结构,会尝试在这个类的包里面去找,而不是从classpath开始找;在这种情况下,除非你把properties文件放到MyClass.class所属的包里面,不然都会是null的。

2. 使用java.lang.ClassLoader类的getResourceAsStream(String name)方法


路径是不能加斜杠的!非常重要。

MyClass.class.getClassLoader().getResourceAsStream("config.properties");

这是因为使用classloader进行读取,所输入的参数必须是一个相对classpath的绝对路径,在格式上,一个绝对路径是不能以'/'开头的。

注意这两个方法是同名的,但路径参数的格式截然不同。


3. 在Maven中的运用

现在几乎所有的web project都是maven project,Maven的默认设置是把

src/main/resources/

加入到classpath里面的。那么,最好的做法是把你的properties文件放进src/main/resources里面,然后用上面代码读取。用Class类的,一般要加斜杠;用ClassLoader类的,绝不能加斜杠!

假如是Eclipse里面,需要把这个src/main/resources加到classpath里面。具体操作是右击工程,选择“Configure buildpath”,根据Maven的要求,把src/main/java和src/main/resources都加进去,并且保证Exclude是none,Include是all,或者至少要包括你需要读取的文件。

热心网友 时间:2023-09-18 06:50

/**获取根目录下的mon.properties文件**/
public class PropertiesUtil{
private Properties props=null;
public PropertiesUtil() throws IOException{
props=new Properties();
props.load(new FileReader("mon.properties"));
}
}

热心网友 时间:2023-09-18 06:51

spring读取么?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怀孕甲状腺激素偏高正常吗 怀孕检查甲状腺素偏高是什么原因引起的 怀孕了甲状腺功能偏高是怎么回事 怀孕甲状腺高是什么引起的 孕中期促甲状腺激素偏高是什么原因 重钢别墅靠谱吗 重刚别墅的致命缺点 重钢别墅的优点和缺点各是什么 积食可以吃什么 车子换了点火线圈,分缸线,火花塞以后车子打不着。这是什么原因 请教java如何实时读取.properties文件中的配置项内容 java如何读取.properties文件的数据 java 怎么读取配置文件 什么是JavaConfig? java web项目中 config.properties文件为什么不放在config文件夹中,它... java读取properties文件 如何用java反射机制读取跟src同一级目录下的config目录下的config.properties. java中的properties文件放在什么地方 JAVA的config.properties 放在WEB项目什么地方?到底怎么读取? 请问java项目里的config.properties具体是做什么的!!! 在java类里,是怎么调用在config.properties这些常用的参数 java图中的config.properties是什么意思? 请问不打游戏用荣耀8x,荣耀20i这两款里的哪一种更好? super junior mamacita mv什么意思 super junior的一首歌,歌词的高潮部分是黑妈妈起个甲甲之类的 super junior 七辑mamacita里讲了啥剧情?每个人的角色是啥? mamacitamv什么意思 mamacita罗马歌词,拜托! SuperJunior新专辑MAMACITA剧情版的完整剧情是什么? mamacita mv什么意思 java怎么调用properties配置文件的值 Java中怎么获取spring中配置的properties属性文件内容 求解梦...昨晚做了个奇怪的梦...有280分 大学生要买电脑吗 上大学后,什么时间段购买电脑比较合适? 大学生买电脑要注意什么? 大学生是否需要买电脑 刚上大学,买个什么电脑好? 大学生一定要买电脑吗?? 大学生购买电脑,帮忙给点建议! 初三语文文言文阅读答案 高分 初三党找一些初中课外现代文赏析,或课内外文言文练习题,好的追加哦 初中语文课外文言文的题目快点解答 2010届初三语文课外浅显文言文,给自己练习练习,要翻译和原文,有字词加点最好 初中语文常考的课外文言文有哪些? 九年级初中复习与能力训练语文(课外文言文语段)全部答案 部编版语文九年级上册文言文专题练习及答案 初三语文文言文问题《陈涉世家》《唐雎不辱使命》内容理解问题,希望给我标准答案,按顺序回答,急,谢谢 初三语文补充习题文言文答案(苏教版) 初三年总复习材料语文文言文