如果它被放置在webapp的類路徑,然後只需使用:
InputStream input = servletContext.getResourceAsStream("file.txt");
如果它被放置在全局類路徑,然後使用:
InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream("file.txt");
如果它被放置在WebContent ,那麼只需使用:
InputStream input = new FileInputStream(servletContext.getRealPath("file.txt"));
這些示例假定它們放在根中。您當然可以使用相對路徑而不是類路徑根或web內容根,例如path/to/file.txt
。您可以通過ServletActionContext#getServletContext()
獲得Struts中的ServletContext
。
編輯:您有以下編輯你的問題:
編輯:謝謝你們的答案。對我來說,這個工作:
String path=GetPointsOfInterestAction.class.getResource("../../../resources/visitor_attractions.txt")
能否請您解釋一下爲什麼
這實際上不是「正確」的方式,而這也是可行的。您只需確保您知道知道相對於文件的路徑,而不是GetPointsOfInterestAction
類的實際路徑。這個類當然放在一個不同的包中,所以你基本上需要返回一個目錄(就像在普通的磁盤文件系統中一樣:cd ../
等等)。再次,這不是最優雅的方式。您需要使用上述前兩種方法之一,資源名稱爲resources/visitor_attractions.txt
。
Yeap。問題是如果我嘗試在常量中讀取它,它將返回null。這似乎是一個錯誤的設計決定。 – 2009-11-23 15:30:25