2011-03-01 29 views
1

我的Java應用程序可以在所有平臺上運行。它正在使用Linux上FTP服務器上的一些遠程文件。爲了在FTP上導航,我使用絕對路徑,如/home/user。如果我創建一個File,如:需要File.isAbsolute()才能使用UNIX文件系統的平臺獨立應用程序

File f = new File("/home/user"); 

然後調用的結果:

f.isAbsolute(); 

似乎是依賴於平臺。但是由於我總是使用遠程UNIX文件系統工作,所以在這種情況下,我總想得到true。有沒有任何內置的Java方式如何確定文件是絕對的unix平臺上?

當然,我可以編寫一個幫助器方法,看看文件名是.startsWith("/"),但我正在尋找一些內置的java解決方案。

回答

2

是否有任何內置的java方式如何識別unix平臺上的文件是絕對的?

沒有,沒有「將絕對在UNIX平臺上」 - 方法標準的API中。

據爲File的文檔雖然,做.startsWith("/")對應於爲File.isAbsolute在UNIX平臺上的實現:

[...] 在UNIX系統上,一個是絕對路徑,如果它的前綴「/」。 [...]

因此,這可能是我在這種情況下會採取的解決方案。

+0

明白了這一點,並且將這種解決方案可能會去,但是從文件的javadoc:「用戶界面和操作系統使用與系統相關的路徑名字符串來命名文件和目錄,這個類表示一個抽象的,與系統無關的視圖分層路徑名稱「。如果File是系統獨立的,爲什麼它是絕對方法系統依賴的? – 2011-03-01 12:38:28

+0

這是一個非常好的問題。說實話,我實際上考慮提交關於該句子的文檔錯誤報告。 – aioobe 2011-03-01 12:43:16

0

不知道它是否對您的問題有幫助,但也可以從File API中使用方法來區分文件路徑。

File getAbsoluteFile() 
     Returns the absolute form of this abstract pathname. 
String  getAbsolutePath() 
     Returns the absolute pathname string of this abstract pathname. 
File getCanonicalFile() 
     Returns the canonical form of this abstract pathname. 
String  getCanonicalPath() 
     Returns the canonical pathname string of this abstract pathname. 
+0

這些方法的實現與系統有關。另外'getCanonicalFile()'只有在本地系統上存在路徑名指示的文件時才能完全工作。 – 2011-03-01 12:41:46

+0

@Joachim:嗯,在這種情況下它不會真的有幫助... – posdef 2011-03-01 12:47:48

相關問題