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