2013-03-15 82 views
0

在我的應用我讀取XML文件(說ABC.xml),這是在WebContent/META-INF文件夾,並解析它使用DOM解析器 如下衝突在日食相對路徑文件名

File xmlFile = new File("WebContent//META-INF//ABC.xml"); 
parser.parse(new InputSource(new FileReader(xmlFile.getAbsolutePath()))); 

它顯示文件未發現異常,當我打印xmlFile.getAbsolutePath()它顯示

D:\Softwares\SDE_7\eclipse\WebContent\META-INF\ABC.xml 

這是我的Eclipse設置位於

所以我試圖用同樣的邏輯在簡單的Java程序和打印的絕對路徑它顯示 正確的路徑(項目文件夾結構)和程序工作正常

D:\GME_WorkSpace\Practice_1\WebContent\META-INF\sample.xml 

爲什麼是這個矛盾呢?我該如何糾正它?

+0

WebContent是您的開發環境eclipse存儲web應用程序源的目錄。在執行時,這個目錄將不存在。您所擁有的只是一個包含已部署應用程序文件和文件系統的war文件。 – 2013-03-15 11:17:32

+0

** WebContent **您的上下文根文件夾?如果是這種情況,你可以把它放在你的相對路徑之外。你爲什麼在你的名字路徑中有雙重斜槓?如果你有反斜槓,你只能使用它們 – greenkode 2013-03-15 11:18:15

+0

我只在開發環境中得到這個錯誤。請你解釋爲什麼會發生這種衝突? – Dobby 2013-03-15 11:18:58

回答

1

如果您在談論WebContent,那聽起來您已經寫了一個Servlet。

在這種情況下,您應該使用ServletContext來查找您的文件。

getServletContext()。getRealPath(...)將獲得Servlet中相對文件名的完整操作系統路徑。

可以從任何繼承自HttpServlet的類中調用getServletContext()。

0
ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); 
URL url = classLoader.getResource("WebContent//META-INF//ABC.xml"); 
File file = new File(url.toURI());