javadoc表示File.pathSeparatorChar:
与系统相关的路径分隔符.此字段初始化为包含系统属性path.separator的值的第一个字符.此字符用于分隔作为路径列表给出的文件序列中的文件名.在UNIX系统上,此字符是
:; 在Microsoft Windows系统上它是;.
但这看起来很奇怪,因为分号不是Windows路径的禁用字符(对于引用,这些是\ / : * ? " < > |Windows资源管理器的重命名功能).
例如,使用以下代码:
String test = "C:\\my;valid;path" + File.pathSeparator + "C:\\Windows";
String[] tests = test.split(File.pathSeparator);
Run Code Online (Sandbox Code Playgroud)
tests将包含C:\\my valid path C:\\Windows,这不是它所期望的.
所以问题是:为什么这个字符不是冒号,就像在Unix上一样?我可以强制我的代码使用冒号,但这似乎打败了在JDK中保持常量的目的.
编辑:Reimeus解释了为什么它不能成为Windows上的冒号(它是驱动器分隔符),但我真正感兴趣的是它不是一个不能出现在路径中的字符的原因,例如|.
java ×1