2014-10-06 48 views
0

我有一個任務,可以將代碼寫成在Windows下運行,也可以在Linux下運行。文件分隔符Java。它是在編譯還是運行時確定的?

我想解決的第一個問題是沒有使用File.separator。相反,使用windows文件分隔符\有一堆硬編碼的Srings。

我在Linux環境下通過VirtualMachine運行java代碼,這有點慢。

爲了讓我的生活更輕鬆,我在Windows下編譯了我的代碼(需要大約1小時編譯整個代碼),並將類文件粘貼到Linux環境中。

所以我的問題是,是否在運行時或編譯時確定File.separator,因爲我仍然面臨與路徑相同的問題?

+1

http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8-b132/java/io/File.java#File.0separator – 2014-10-06 15:21:45

+0

路徑分隔符來自哪裏是文件系統,它是抽象的。這是否意味着具體實例只會在運行時返回,因此意味着它將在運行時返回正確的路徑分隔符? – 2014-10-06 15:25:32

回答

3

它在運行時確定。

the OpenJDK 8 implementation,該File#separator將通過該FileSystem初始化通過DefaultFileSystem#getFileSystem()返回。這個課程將由JRE提供。它會給你一個不同的值,取決於Windows或Linux的安裝。

the OpenJDK 7 implementation中,通過native調用返回了FileSystem實現。返回的值取決於當地的環境。

相關問題