2010-04-07 156 views
1

我正在創建一個FileOutputStream對象。它在其構造函數中將文件或字符串作爲參數。FileOutputStream()可以將相對路徑作爲參數

我的問題是,我可以給它一個相對URL作爲一個文件的位置的參數,它似乎並沒有工作,但我試圖解決,如果這是可能的(如果不是我將停止嘗試)。

如果這是不可能的,我怎麼能(從一個servlet)獲取到當前位置的絕對路徑(在文件系統上,而不是邏輯URL),以便我可以將它傳遞給構造函數。

我的問題的一部分是,我的開發盒是Windows,但我會發布這個Unix框,所以路徑不能相同,即在Windows C:/ ....和unix/usr/.. 。

回答

3
+0

可能是你的意思是getRealPath而不是getAbsolutePath – 2010-04-07 07:03:57

+0

是的,修正了你的評論。從移動應答構成這種錯誤的風險。 – Bozho 2010-04-07 07:09:37

+0

謝謝我使用了... request.getSession()。getServletContext()。getRealPath(request.getServletPath()) – Ankur 2010-04-07 07:38:15

1

從文件的javadoc:

相對路徑名,相反,必須在從其他路徑採取的信息來解釋。默認情況下,java.io包中的類總是針對當前用戶目錄解析相對路徑名。該目錄由系統屬性user.dir命名,通常是調用Java虛擬機的目錄。

編輯: Bozho是對的,我沒有讀到這是一個servlet。我聽從了他的答案:

ServletContext.getRealPath(relativePath)

+0

這不是用servlet去的方法 – Bozho 2010-04-07 07:06:17

2

這應該使用相對路徑工作,但要小心的當前目錄是什麼。例如,如果使用Eclipse,當前目錄是項目目錄(並且而不是包含類的目錄)。

+0

謝謝,這很有用..我使用eclipse – Ankur 2010-04-07 07:13:10