2013-02-21 41 views
1

對不起,如果這似乎是一個基本的問題,但我似乎無法找到任何答案。如何在Linux上以Java命名調用目錄?

我有一些在Windows上正常工作的java代碼。在這裏面,我有一條線,說:

File dir = new File("F:\\some\\files\\here"); 

我在Linux上運行的遠程服務器上的代碼,但現在它給我的問題。我改了行到下面,因爲我不知道該驅動器的名稱是什麼(我不認爲這事項在Linux上):

File dir = new File("\\some\\files\\here"); 

有此線路上沒有錯誤,但後來,我打電話

File[] data = dir.listFiles(); 

在我的Windows代碼這工作正常,但在Linux上它返回一個空對象。我對此進行了更深入的研究,看起來我的原始代碼並沒有讓我回到Linux目錄。

dir.isDirectory() 

在Linux代碼上返回false

任何人都知道可能是什麼問題?我也嘗試使用/而不是\但同樣的問題。

一些額外的信息:

我可以訪問的目錄細方法的任何部分,除了listFiles()或列表()。我試過的一件事是做dir.getParent()。listFiles()[0]。 getParent()應該給我一個目錄,不管怎樣,但是listFiles()調用再次給了我一個空對象,它也告訴我getParent()的結果是一個文件而不是目錄。

+3

unix系統沒有驅動器號,並使用'/'作爲目錄分隔符。你需要有'/ some/files'例如('some' dir在文件系統的根目錄下,''''在'some'下面''等等。 – 2013-02-21 19:44:29

+3

你會努力去做一些硬編碼的東西在不同的計算機上你想要的目錄在哪裏,這個問題基本沒有意義,如果在另一臺Windows電腦上沒有'F:'驅動器? – 2013-02-21 19:45:33

+2

*「我也試過使用/而不是\但是同樣的問題。 *你好像在輸入源代碼中輸入隨機字符串,請使用'file.separator'代替 – 2013-02-21 19:45:55

回答

0

您應該使用File.separator。 這是一個獨立於平臺的工具,因此在Windows或Linux中構建路徑都不會有任何問題

+0

以及如何祈禱告訴我們這個數字會在什麼驅動器上顯示? – 2013-02-21 19:50:30

+0

從「文件」文檔:_系統相關的默認名稱分隔符字符。該字段被初始化爲包含系統屬性file.separator的值的第一個字符。在UNIX系統上,這個字段的值是'/';在Microsoft Windows系統上它是'\\'._ – Wamasa 2013-02-21 19:53:44

+1

而且......你如何從'C:'而不是'C:'獲得'F:'? – 2013-02-21 19:55:48