相关疑难解决方法(0)

为什么File.pathSeparatorChar在Windows上是分号?

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

5
推荐指数
2
解决办法
1737
查看次数

标签 统计

java ×1