2013-05-16 69 views
2

我正在爲我的java應用程序(Servlet,jsp)使用tomcat服務器。在我的servlet頁面調用一個java類函數。事實上,java文件是單獨編寫的,我將調用它內部寫入的函數。在函數中,爲了某種目的,必須讀取一個配置(用戶定義的)文件。因此,我正在使用File類。如何在java文件中爲我的文件提供相對路徑?

但是,在這裏我必須給出配置文件的相對路徑(用戶定義)。因爲,現在我在本地Windows服務器上運行此應用程序。但是我的活服務器基於Linux.So,文件路徑是在linux中改變。

File f1=new File("D:\tomcat\webapp\myapp\WEB-INF\src\point_config.txt"); -- windows 
File f1=new File("D:\ravi\tomcat\webapp\myapp\WEB-INF\src\point_config.txt"); -- linux 

所以,我必須給文件的相對路徑,這是windows和linux機器共同的文件。

有沒有辦法做到這一點?

請指導我擺脫這個問題?

+0

是你的類路徑中的文件還是直接在web-inf下? – NINCOMPOOP

回答

6

將在代碼在你的web應用的WEB-INF/classes文件夾中的配置文件,這樣寫的

InputStream is= 
    YourClassName.class.getResourceAsStream("point_config.txt"); 
1

配置文件的路徑通向WEB-INF文件夾

tomcat\webapp\myapp\WEB-INF\src\point_config.txt 

WEB-INF中的任何內容都受到保護,並且一旦Web應用程序啓動後就不能由用戶定義。如果您打算從文件系統中讀取用戶定義的配置文件,請使用類似common configuration API的API。

如果要堅持將文件保存在WEB-INF文件夾中,請使用Class.getResourceAsStream()方法來獲取配置。這不會使配置用戶定義。

+0

您確定應用程序無法到達WEB-INF內嗎?你能否提供有關保護聲明的來源?我知道一個用戶不能在WEB-INF內打一個文件,但我相信應用程序可以。 –

+1

@KevinBowersox不,應用程序可以通過'Class.getResourceAsStream()'到達WEB-INF內部。用戶無法到達WEB-INF內部。我提到要強調的是,WEB-INF內的一個屬性並不真正由用戶定義。 –

相關問題