如果你下定決心要取得領先到資源的路徑,你可以檢索它的URL,然後分析它,像這樣的:
URL url = getClass().getResource("/WEB-INF/web.xml");
String path = url.toString();
if (path.startsWith("file:/")) {
path = path.substring("file:/".length());
File file = new File(path);
...do something with the file...
}
有,然而,一個警告:你的資源可以直接從JAR檔案讀取,而不是從文件系統中的平面文件,因而無法通過File對象很容易得到。上面的內容在JBoss(包括Tomcat)中有效,但是在部署之前JBoss爆炸了一個WAR文件 - 不確定一個純粹的Tomcat是否也會這樣做。
主要問題是:爲什麼你真的想要以File對象的形式獲取資源?也許得到它的URL對你來說已經足夠了?或者,也許你只需要讀取權限?
如果你需要的是讀訪問,最簡單的辦法讓你的類路徑中的任何資源(如上面的web.xml)是通過簡單地調用:
InputStream in = getClass().getResourceAsStream("/WEB-INF/web.xml")
如果你想要寫訪問該文件,更好的解決方案是預先配置一個目錄(例如,通過web.xml),在那裏解壓所有需要的文件(例如,通過上面的getResourceAsStream方法),然後編輯並從您的預定義目錄中訪問它們這與您的應用程序服務器無關。