簡體   English   中英

使用Java的Eclipse動態Web項目:在哪里存儲以及如何引用數據集?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM