java操作Properties屬性檔案及獲取專案部署伺服器路徑
</pre>一、web專案根目錄的獲得(釋出之後),java原生類中不可以使用1 從servlet出發可建立一個servlet在其的init方法中寫入如下語句(沒有請求的話會拋空指標導常)<pre name="code" class="java">ServletContext s1=this.getServletContext();
String temp=s1.getRealPath("/"); (關鍵)
結果形如:F:\tomcat-6.0.36\webapps\test\(test為專案名字)
如果是呼叫了s1.getRealPath("")則輸出F:\tomcat-6.0.36\webapps\test(少了一個"\")
2 從httpServletRequest出發(沒有請求的話會拋空指標導常)
String path=request.getSession().getServletContext().getRealPath("/");
結果形如: F:\tomcat-6.0.36\webapps\test\二、屬性檔案的讀取:
1、filePath為.properties必須為絕對路徑,相對路徑找不到該檔案
Properties props = new Properties();
InputStream in = lnew BufferedInputStream( new FileInputStream(filePath));
p.load(in);
String realPath=props.getProperty("key");
2、filePath可為.properties相對路徑
Properties props = new Properties();
props.load(NewUserController.class.getClassLoader().getResourceAsStream(filename));
String realPath=props.getProperty("key");
ps:在讀寫操作檔案時,使用第一種方式做為輸入流(InputStream)可以讀寫操作,第二種方式僅限於讀取輸入流(InputStream),而寫入不到檔案中,但是不報錯的,同時會將你相對路徑的檔案拷貝到tomcat所在碟符根目錄下建立檔案。我tomcat在E盤所以會在E盤,則將我專案中相對路徑檔案拷貝到E盤下,之後修改這個檔案!三、獲取伺服器路徑的各種方式
//獲取伺服器中絕對地址,帶file: file:/D:/wc/.metadata/.plugins/org.eclipse.wst.server.core/tmp7/wtpwebapps/wanxue/WEB-INF/classes/
System.out.println(Thread.currentThread().getContextClassLoader().getResource(""));
System.out.println(this.getClass().getResource("/"));
//獲取伺服器中絕對地址 /E:/workSoftware/apache-tomcat-7.0.56/webapps/wanxue/WEB-INF/classes/
System.out.println(Thread.currentThread().getContextClassLoader().getResource("").getPath());
//獲取當前類的在伺服器中絕對地址 /E:/workSoftware/apache-tomcat-7.0.56/webapps/wanxue/WEB-INF/classes/
System.out.println(this.getClass().getProtectionDomain().getCodeSource().getLocation().getPath());
//獲取當前專案在部署在伺服器的絕對位置,並去掉路徑前的下劃線 E:/workSoftware/apache-tomcat-7.0.56/webapps/wanxue/WEB-INF/classes/
String path = switchDServiceImpl.class.getClassLoader().getResource("") .getPath().substring(1);
ps:這個伺服器地址為你在eclipse中配置Apache Tomcat中的部署路徑,預設路徑為 workspace/.metadata/.plugins/org.eclipse.core.resources/.projects
ps:修改後Eclipse中專案在Apache Tomcat中的部署路徑,地址:點選開啟連結
ps:做專案過程中,一定要區分eclipse的預設專案Apache Tomcat的部署路徑,自己的專案工作目錄及自己安裝Apache Tomcat安裝目錄,以免混淆。
四、獲取其他路徑地址
//tomcat根目錄 E:\workSoftware\apache-tomcat-7.0.56
System.out.println(System.getProperty("catalina.home").toString());
//eclipse根目錄地址 E:\workSoftware\eclipse
System.out.println(System.getProperty("user.dir"));
System.out.println((new File("")).getAbsolutePath());
System.out.println(System.getProperty("user.dir").replace("bin", "webapps"));
五、JAVA讀寫操作程式碼
<span style="white-space:pre"> </span>//開關配置地址,獲取當前專案在部署在伺服器的絕對位置
static String filePath =switchDServiceImpl.class.getClassLoader().getResource("") .getPath().substring(1)+"switchState.properties";
/**
* @author 王超
* return 根據key取得value值
*/
public String keyValue(String key) {
Properties pps = new Properties();
try {
InputStream in = new BufferedInputStream (new FileInputStream(filePath));
pps.load(in);
String value = pps.getProperty(key);
return value;
}catch (Exception e) {
e.printStackTrace();
return "switchState.properties路徑找不到";
}
}
/**
* 修改properties中鍵值對
* @author 王超
* @param key 鍵
* @param value 值
*/
public void writeProperties( String key, String value) {
Properties pps = new Properties();
InputStream in;
try {
in = new FileInputStream(filePath);
//從輸入流中讀取屬性列表(鍵和元素對)
pps.load(in);
//呼叫 Hashtable 的方法 put。使用 getProperty 方法提供並行性。
//強制要求為屬性的鍵和值使用字串。返回值是 Hashtable 呼叫 put 的結果。
OutputStream out = new FileOutputStream(filePath);
pps.setProperty(key, value);
//以適合使用 load 方法載入到 Properties 表中的格式,
//將此 Properties 表中的屬性列表(鍵和元素對)寫入輸出流
pps.store(out, "Update " + key + " name");
} catch (Exception e) {
e.printStackTrace();
}
}
ps:這裡採用new BufferedInputStream (new FileInputStream(filePath))來進行讀寫檔案操作,在"三"中有介紹的
ps:呼叫keyValue(key)讀取檔案,呼叫writeProperties(key,value)進行新增或修改,當key存在則修改,不存在則新增鍵值對!
ps:在java專案中可以使用File.separator代表下劃線
相關文章
- Java系列-如何讀取.properties屬性檔案Java
- 讀取web專案properties檔案路徑 解決tomcat伺服器找不到properties路徑問題WebTomcat伺服器
- Properties屬性檔案
- java屬性檔案properties常用操作工具類Java
- java獲取專案路徑工具類Java
- 怎樣獲取Torque.properties檔案的絕對路徑?
- java Properties獲取本地檔案的變數Java變數
- js獲取專案根路徑JS
- java讀取properties檔案Java
- Java中的獲取檔案的物理絕對路徑,和讀取檔案Java
- 在Progress中獲取檔案屬性
- SpringBoot 中獲取專案的路徑和檔案流Spring Boot
- c#檔案路徑的獲取C#
- 獲取檔案路徑(Delphi )----轉貼
- Java屬性檔案的讀取Java
- PHP獲取檔案基本屬性的方法PHP
- help:如何獲取類檔案的路徑
- 獲取絕對路徑 【檔案找不到】
- jboss 獲取web專案真實路徑Web
- 定義樣式並獲取上傳檔案路徑及指定檔案型別型別
- java中讀取.properties配置檔案Java
- Linux 檔案屬性及詳細操作Linux
- linux 檔案屬性及基礎操作Linux
- Java 專案讀取 resource 資原始檔路徑問題Java
- java中獲取類載入路徑和專案根路徑的5種方法Java
- 5招輕鬆獲取Mac檔案路徑Mac
- C# 獲取專案程式路徑的方法C#
- Java 對 properties 檔案操作 (ResourceBundle 類和 Properties 類)Java
- Java中獲取JAR檔案中資源路徑的三種方法JavaJAR
- python基本操作-檔案、目錄及路徑Python
- 獲取當前js檔案被引用的路徑JS
- 如何獲取 vue 單檔案自身原始碼路徑Vue原始碼
- Xamarin Essentials教程獲取路徑檔案系統FileSystem
- 獲取沙盒檔案路徑的兩種方法
- C# Winform中如何獲取檔名與檔案路徑C#ORM
- Java讀取properties配置檔案工具包Java
- 載入Java專案中scr下的properties檔案Java
- 【萬里征程——Windows App開發】檔案&資料——獲取檔案屬性WindowsAPP