2014-01-07 79 views
6

下面是我的Windows目錄的路徑。通常情況下,路徑應該有\而不是//但都似乎工作。Windows和Linux的文件路徑名

String WinDir = "C://trash//blah//blah";

同一個Linux路徑。正常應該有/而不是//。下面和上面的代碼片段工作正常,並將抓取指定文件的內容。

String LinuxDir = "//foo//bar//blah"

因此,無論使用的文件路徑詭異的聲明,但似乎都做工精細。請詳細說明。

例如,

File file = new File(WinDir); file.mkdir();

+2

更好地使用File.separator http://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html – gtgaxiola

+1

@gtgaxiola或者您可以使用uri而不是文件名=>不是os特定的。 – assylias

+1

編輯的問題,包括樣品 –

回答

15

通常情況下,在Windows上指定文件路徑時,你會用反斜槓。但是,在Java和Windows世界以外的許多其他地方,反斜槓是轉義字符,因此您必須將它們翻倍。在Java中,Windows路徑通常如下所示:String WinDir = "C:\\trash\\blah\\blah";。另一方面,正斜線不需要翻倍,可以在Windows和Unix上運行。雙正斜槓沒有傷害。他們對路徑無所作爲,只佔用空間(//相當於/./)。它看起來像某人只是將所有反斜槓的空間轉換爲正斜槓。你可以刪除它們。在Java中,根據您的平臺,有一個字段File.separator(字符串)和File.separatorChar(字符),它爲您提供了正確的分隔符(/\)。在某些情況下使用它可能會更好:String WinDir = "C:" + File.separator + "trash" + File.separator + "blah" + File.separator + "blah";

+2

@SotiriosDelimanolis。當然。 ''''''等價於'/./'。這是一個非常有效的構造。只是佔用了字符串中的空間。 –

+0

謝謝,這就是我對整個時間的好奇心。 –

+0

@SotiriosDelimanolis。完成 –

-5

字符串中的雙正斜槓「//」會引用空目錄。所以它是說/「emptydirectory」/目錄。

+5

這個解釋不是我遇到過的任何操作系統使用的。 – duskwuff