2012-08-08 41 views
2

我所做的Java工作中有100%是在Android上。在構建文件路徑時,我總是確保使用 File.pathSeparator File.separatorChar而不是「/」。是基於OS,語言環境還是其他的File.separatorChar?

什麼決定了File.pathSeperator的值?是否有任何Android設備在哪裏 File.pathSeparator File.separatorChar不會是「/」?

回答

1

根據source code of File.javapathSeparator從char System.getProperty("path.separator", ":").charAt(0)中拉出。另一方面,separator來自System.getProperty("file.separator", "/").charAt(0)

因爲Android是基於Linux的,所以應該始終爲/。不過,我已經看到:出現的毛刺(摩托羅拉Droid;請參閱bug report),通過使用上面的默認值。

當我編碼時,我總是使用/ ...說實話,我不認爲有必要引用File類(這將主要用於非Android工作)。我想最好堅持到/

此外,根據this answer(適用於Java,不僅僅是Android),/可以安全地在所有Java平臺上使用,並且它會找出它需要在內部使用的東西。

1

我想你的意思是File.separatorFile.separatorChar對不對?如果您在docs看它指出:

public static final char separatorChar 

在文件名中使用單獨的組件與系統相關的字符(「/」)。使用這個(而不是硬編碼'/')有助於其他操作系統的可移植性。

該字段是從系統屬性「file.separator」初始化的。稍後對該屬性的更改將對此字段或此類不起作用。

它與系統有關。從技術上講,某人可能會在非Linux平臺上實現Android(請參閱BlueStacks),其中路徑分隔符不是'/'。在實踐中,我想你可以避免使用'/',而不用擔心,但是使用這些字段是一個好習慣。

+0

儘管我同意可移植性的觀點,但在Java中,Windows也可以識別'/'。 ([Source](http://www.java-samples.com/showtutorial.php?tutorialid=382))雖然我承認你可能不會在Windows上實現Android(eww!),但很可能大部分系統都支持'/不管。 – Eric 2012-08-08 20:16:42

相關問題