問題
正常在 Java 工程中讀取某路徑下的檔案時,可以採用絕對路徑和相對路徑,絕對路徑沒什麼好說的,相對路徑即相對當前類的路徑。
本地讀取資原始檔
採用檔案(File方式進行讀取)
public void test1() throws IOException {
File file = new File("src/main/resources/database.properties");
byte[] bytes = new byte[1024];
StringBuffer sb = new StringBuffer();
int byteread = 0;
FileInputStream fis = new FileInputStream(file);
while ((byteread = fis.read(bytes)) != -1){
String s = new String(bytes, 0, byteread);
sb.append(s);
}
System.out.println(sb);
}
伺服器讀取資源
方式一
採用流(Stream)的方式讀取,並通過JDK中Properties類載入,可以方便的獲取到配置檔案中的資訊
public void test3() throws IOException {
// this.getClass() = test.class
//採用ClassLoader物件去載入資原始檔
InputStream in1 = this.getClass().getClassLoader().getResourceAsStream("database.properties");
//採用Class物件去載入
// InputStream in3 = this.getClass().getResourceAsStream("/resources/database.properties");
Properties properties = new Properties();
properties.load(in1);
String driver = properties.getProperty("driver");
System.out.println(driver);
}
採用Spring註解
如果工程中使用Spring,可以通過註解的方式獲取配置資訊,但需要將配置檔案放到Spring配置檔案中掃描後,才能將配置資訊放入上下文。
<context:component-scan base-package="com.xxxx.service"/>
<context:property-placeholder location="classpath:properties/xxx.properties" ignore-unresolvable="true"/>
然後在程式中可以使用 @Value進行獲取properties檔案中的屬性值,如下:
@Value("${xxxt.server}")
private static String serverUrl;
採用Spring配置
也可以在Spring配置檔案中讀取屬性值,賦予類成員變數
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:properties/xxx.properties"/>
</bean>
<bean id="service" class="com.xxxx.service.ServiceImpl"> <property name="serverUrl" value="${xxxt.server}" />
</bean>
</beans>
本作品採用《CC 協議》,轉載必須註明作者和本文連結