有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java文件。isDirectory()为同一目录返回true和false

AUX是Windows中禁止用于命名Windows中目录/文件的关键字。我在下面编写了Java代码,它以两种不同的方式创建这个目录,一种使用内置的mkdir()方法,另一种使用exec()

当调用isDirectory()时,指向同一目录的file对象分别返回truefalse。我想了解这背后的原因

代码

import java.io.*;
import java.nio.file.*;

class Test{

    public static void main(final String... arguments) throws Exception{

        File file=new File("\\\\.\\\\.\\C:\\Temp\\AUX");

        file.mkdir();
        System.out.println(file.isDirectory());
        file.delete();

        Runtime.getRuntime().exec("cmd /c md \\\\.\\\\C:\\Temp\\AUX");
        System.out.println(file.isDirectory());
        Runtime.getRuntime().exec("cmd /c rd \\\\.\\\\C:\\Temp\\AUX");

    }

}

输出

C:\Temp>javac Test.java

C:\Temp>java Test
true
false

共 (1) 个答案

  1. # 1 楼答案

    如果你使用过程。waitFor(),可以确保在测试目录是否存在之前已创建该目录

    class Test{
    
        public static void main(final String... arguments) throws Exception{
    
            File file=new File("\\\\.\\\\.\\C:\\Temp\\AUX");
    
            file.mkdir();
            System.out.println(file.isDirectory());
            file.delete();
    
            Process p = Runtime.getRuntime().exec("cmd /c md \\\\.\\\\C:\\Temp\\AUX");
            p.waitFor();
            System.out.println(file.isDirectory());
            Runtime.getRuntime().exec("cmd /c rd \\\\.\\\\C:\\Temp\\AUX");
    
        }
    
    }