我想知道为什么当JVM
被要求创建无效路径时,C:invalidPath
不会抛出任何异常,例如" public static void main(String[] args) {
File f = new File("C:invalidPath");
f.mkdir();
}
"。
例如:
{{1}}
上一个示例创建一个名为" invalidPath"的文件夹。在当前文件夹中。我认为这不正常。
答案 0 :(得分:8)
您指定的路径是Microsoft Windows上的合法路径。它被指定为相对于卷C上当前工作目录的路径。在Windows上,与之前的DOS相同,每个卷都有一个与之关联的单独工作目录,另外还有当前工作卷的概念
答案 1 :(得分:3)
这不是JVM的错误或责任。
由底层文件系统将路径规范(即字符串)转换为名称所代表的实际逻辑文件。 JVM只是将这个字符串传递给文件系统,它决定了如何处理它。
所以真正的问题是"为什么 NTFS [假设你正在使用的]解释' C:invalidPath'在当前目录中创建该文件?"。原因很简单,就是如何为这个文件系统定义路径。
如果文件名仅以磁盘指示符开头但不以冒号后面的反斜杠开头,则会将其解释为指定字母的驱动器上当前目录的相对路径。请注意,当前目录可能是也可能不是根目录,具体取决于最近的"更改目录"该磁盘上的操作。此格式的示例如下:
- " C:tmp.txt"是指一个名为" tmp.txt"的文件。在驱动器C上的当前目录中。