Java工程读取resources中资源文件路径难题

常规在Java工程中读取某路径下的文本时,可以选取绝对路径和绝对路径,相对路径没什么好说的,相对路径,即相对于当下类的路子。在地头工程和服务器中读取文件的点子有所不一致,以下图配置文件为例。

图片 1

本地读取资源文件

java类中须要读取properties中的配置文件,可以采取文件(File)方法举办读取:

1 File file = new File("src/main/resources/properties/basecom.properties");
2 InputStream in = new FileInputStream(file);

当在eclipse中运作(不安插到服务器上),可以读取到文件。

服务器(汤姆cat)读取资源文件

方式一:采用流+Properties

当工程布署到汤姆cat中时,根据下面格局,则会现出找不到该文件路径的那么些。经查找资料知道,Java工程打包安顿到Tomcat中时,properties的途径变到顶层(classes下),那是由Maven工程结构决定的。由Maven塑造的web工程,主代码放在src/main/java路径下,资源位居src/main/resources路径下,当打造为war包的时候,会将主代码和资源文件放置classes文件夹下:

图片 2

与此同时,此时读取文件必要运用流(stream)的法门读取,并透过JDK中Properties类加载,可以方便的收获到安排文件中的音讯,如下:

1 InputStream in = this.getClass().getResourceAsStream("/properties/basecom.properties");
2 Properties properties = new Properties();
3 properties.load(in);
4 properties.getProperty("property_name");

 其中properties前的斜杠,相对于调用类,共同的顶层路径。

方式二:采用Spring注解

若果工程中使用Spring,可以经过申明的方法获取配置新闻,但须要将安插文件放到Spring配置文件中围观后,才能将配置音讯放入上下文。

1 <context:component-scan base-package="com.xxxx.service"/>
2 <context:property-placeholder location="classpath:properties/xxx.properties" ignore-unresolvable="true"/>

然后在先后中得以选择 @Value进行获取properties文件中的属性值,如下:

1 @Value("${xxxt.server}")
2 private static String serverUrl;

方式三:采用Spring配置

也可以在Spring配置文件中读取属性值,赋予类成员变量

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4     xsi:schemaLocation="http://www.springframework.org/schema/beans 
 5     http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
 6     
 7     <bean id=propertyConfigurer class=org.springframework.beans.factory.config.PropertyPlaceholderConfigurer>
 8         <property name="location" value="classpath:properties/xxx.properties"/>
 9     </bean>
10     
11     <bean id="service" class="com.xxxx.service.ServiceImpl">
12         <property name="serverUrl" value="${xxxt.server}">
13     </bean>
14 
15 </beans>

 

参考:

Resource from src/main/resources not found after building with
maven
 
      

[Java] 在 jar 文件中读取 resources
目录下的文书
     

相关文章