[英]Where should we store database config files in Java Eclipse Dynamic Web Project?
[英]Eclipse dynamic web project with Java: where to store and how reference datasets?
我正在后端用servlet開發eclipse中的Web項目(使用tomcat 8)。 在servlet中,我想引用兩個包含應讀取數據的大文件。 直到現在,我還只是使用硬編碼的文件路徑作為字符串來引用文件,例如: "C:\\\\data\\\\file1"
我想將文件存儲在項目中,以便無論在哪台計算機上運行應用程序,它們的相對路徑都保持不變。
這個主題有時在這里出現,我已經嘗試過類似
System.getProperty("catalina.base");
要么
System.getProperty("user.dir");
但兩種方法都指向與我的文件存儲位置完全不同的位置。
因此,如果文件存儲在這樣的項目中:
"server\\webapps\\project\\data\\file1"
並且servlet與其他.java文件一起包含在package文件夾中,我如何以字符串的形式獲取file1
的路徑?
如果該文件是webapp的一部分,則不得將其視為文件系統上的文件。 Java EE webapp部署為war文件,基本上是zip文件。 有些服務器將這個war文件提取到磁盤上,有些則不需要,但是您不必在意,因為Java API提供了讀取應用程序中嵌入的資源所需的一切。
如果在WEB-INF / classes內部的已部署歸檔文件中,則它是應用程序的類路徑的一部分,必須使用類加載器加載:
InputStream in = MyServlet.class.getResourceAsStream("/com/foo/bar/file.txt");
其中com.foo.bar
是文件所在的包。 為了使文件最終到達歸檔文件中的該位置,您可以將其與Java源文件一起放在com.foo.bar
包中。 Eclipse將通過簡單地復制它來“編譯”該文件。
如果它在存檔中的其他位置,例如/WEB-INF/file.txt
,則應使用
InputStream in = servletContext.getResourceAsStream("/WEB-INF/file.txt");
要最終顯示在存檔內的/WEB-INF/
,該文件應位於典型的Eclipse項目中的WebContent/WEB-INF
。
我在本主題中找到了一個簡單的解決方案: 如何從類路徑中將文件作為文件實例加載/引用
除非我不是將URL對象轉換為URI,而是轉換為字符串。 還沒有在另一台服務器上對其進行測試,但是至少它現在可以正常工作了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.