歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Java讀取properties時路徑注意問題

先來看看建立的測試工程目錄

 

屬性文件我們放在包test下,當然了,一般在實際開發過程中不建議這樣做,建立把屬性文件放在src目錄下,現在放在包下主要是便於了解路徑的問題。

下面來看一段讀取屬性文件的代碼,屬性文件配置了一個類Hello的K-V鍵值,我們要從中讀取並加載到內存中來。

Java 8 中 HashMap 的性能提升 http://www.linuxidc.com/Linux/2014-04/100868.htm

Java 8 的 Nashorn 引擎 http://www.linuxidc.com/Linux/2014-03/98880.htm

Java 8簡明教程 http://www.linuxidc.com/Linux/2014-03/98754.htm

ReadProperties.properties

v=com.luhy.test.Hello

Hello類:

package com.luhy.test;

public class Hello {
 public void run(){
  System.out.println("Hello");
 }
}

ReadProperties.java

package com.luhy.test;

import java.util.Properties;

public class ReadProperties {
 public static void main(String[] args) throws Exception{
  String filename = "com/luhy/test/ReadProperties.properties";
  Properties props = new Properties();
  props.load(ReadProperties.class.getClassLoader().getResourceAsStream(filename));
  String h = props.getProperty("v");
  Object o = Class.forName(h).newInstance();
  Hello hello = (Hello)o;
  hello.run();
 
 }
}

執行完打印輸出:

Hello

下面再來看一下編譯後的bin目錄

 

可見編譯後屬性文件被自動放到相應的包內,當然了,這裡的bin相當於源碼中的src,實際開發中一般放在此src目錄下,這樣在發布項目時就不用折騰了。

說明:

1、props.load(ReadProperties.class.getClassLoader().getResourceAsStream(filename));意思是獲得從Properties類獲得類加載器(類加載器主要有四種,分別加載不同類型的類,加載只是把class文件放進內存,並沒有產生對象),並把指定文件轉化為流。這一步,有很多新手,直接往load()裡填文件名或具體文件路徑名,程序運行時會報錯找不到指定路徑。所以,一定要注意這點。

Copyright © Linux教程網 All Rights Reserved