在Java和Web中讀取properties文件
- 普通java工程讀取properties文件
- web工程中servlet讀取properties文件
- web工程中非servlet讀取properties文件 </ul>
不論哪種情況加載properties文件的大概流程是一樣的,只不過是生成流時使用的文件路徑有區別.
假設db.properties文件:username=root
如果知道properties文件的絕對路徑:
String path = "C:\\db.properties"; FileInputStream in = new FileInputStream(path); Properties prop = new Properties(); prop.load(in); prop.getProperty("username");
web工程中,文件在工程中的位置$app/WEB-INF/classes/db.properties
在Servlet中有2種方式:
InputStream in = this.getServletContext().getResourceAsStream("/WEB-INF/classes/db.properties"); Properties prop = new Properties(); prop.load(in); prop.getProperty("username");
String path = this.getServletContext().getRealPath("/WEB-INF/classes/db.properties"); FileInputStream in = new FileInputStream(path); Properties prop = new Properties(); prop.load(in); prop.getProperty("username");
非Servlet時,假設類名為Demo,要使用類裝載器來讀取,也有兩種方式:
1.直接將文件裝載到內存中
2.得到文件的絕對路徑再進行操作
InputStream in = Demo.class.getClassLoader().getResourceAsStream("db.properties"); Properties prop = new Properties(); prop.load(in); prop.getProperty("username"); //弊端:類裝載器加載內容時,會先查找內存中是否已經存在相應的內容 //如果有就不再加載直接使用內存中的,所以此方法,第一次加載后,如果文件內容有變動,第二次加載后還是原來的內容,無法加載修改后的內容 //下邊的方法取文件的絕對路徑來加載不會有這種問題
String path = Demo.class.getClassLoader().getResource("db.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://my.oschina.net/lhplj/blog/386014
本文由用戶 6x7d 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!