为什么JVM无法检测到某些无效路径

时间:2014-10-27 12:05:15

标签: java

我想知道为什么当JVM被要求创建无效路径时,C:invalidPath不会抛出任何异常,例如" public static void main(String[] args) { File f = new File("C:invalidPath"); f.mkdir(); } "。 例如:

{{1}}

上一个示例创建一个名为" invalidPath"的文件夹。在当前文件夹中。我认为这不正常。

2 个答案:

答案 0 :(得分:8)

您指定的路径是Microsoft Windows上的合法路径。它被指定为相对于卷C上当前工作目录的路径。在Windows上,与之前的DOS相同,每个卷都有一个与之关联的单独工作目录,另外还有当前工作卷的概念

答案 1 :(得分:3)

这不是JVM的错误或责任。

由底层文件系统将路径规范(即字符串)转换为名称所代表的实际逻辑文件。 JVM只是将这个字符串传递给文件系统,它决定了如何处理它。

所以真正的问题是"为什么 NTFS [假设你正在使用的]解释' C:invalidPath'在当前目录中创建该文件?"。原因很简单,就是如何为这个文件系统定义路径。

来自the documentation

  

如果文件名仅以磁盘指示符开头但不以冒号后面的反斜杠开头,则会将其解释为指定字母的驱动器上当前目录的相对路径。请注意,当前目录可能是也可能不是根目录,具体取决于最近的"更改目录"该磁盘上的操作。此格式的示例如下:

     
      
  • " C:tmp.txt"是指一个名为" tmp.txt"的文件。在驱动器C上的当前目录中。
  •