繁体   English   中英

File.isDirectory()对同一目录返回true和false

[英]File.isDirectory() returns true and false for same Directory

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

调用isDirectory()时,指向同一目录的文件对象分别返回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

如果使用Process.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");

    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM