File.separatorChar是基于操作系统,语言环境还是其他什么?

时间:2012-08-08 19:56:09

标签: android file locale

我所做的100%Java工作都在Android上。在构造文件路径时,我总是确保使用 File.pathSeparator File.separatorChar而不是“/".

什么决定File.pathSeperator的值?是否有任何Android设备 File.pathSeparator File.separatorChar不是“/”?

2 个答案:

答案 0 :(得分:1)

根据source code of File.java,从pathSeparator中提取System.getProperty("path.separator", ":").charAt(0)。另一方面,separator来自System.getProperty("file.separator", "/").charAt(0)

由于Android是基于Linux的,因此应始终为/。但是,我已经看到了:出现的故障(Motorola Droid;请参阅bug report),使用上面的默认值。

当我编码时,我总是使用/ ...说实话,我认为没有必要引用File类(这主要是针对非Android工作)。我认为最好坚持/

此外,根据this answer(与Java有关,而不仅仅是Android),/可以安全地在所有Java平台上使用,并且它将弄清楚它需要在内部使用。

答案 1 :(得分:1)

我认为你的意思是File.separatorFile.separatorChar对吗?如果您查看docs,请说明:

public static final char separatorChar
  

与系统相关的字符,用于分隔文件名('/')中的组件。使用它(而不是硬编码'/')有助于移植到其他操作系统。

     

此字段从系统属性“file.separator”初始化。稍后对该属性的更改将不会对此字段或此类产生任何影响。

它取决于系统。从技术上讲,有人可以在非Linux平台上实现Android(参见BlueStacks),其中路径分隔符不是“/”。在实践中,我想你可以在没有问题的情况下使用'/',但是使用这些字段是个好习惯。