AUX
是Windows中用于命名Windows中目录/文件的禁用关键字。我在下面编写了Java代码,它以两种不同的方式创建了这个目录,一个使用内置mkdir()
方法,另一个使用exec()
。
当调用true
时,指向同一目录的文件对象分别返回false
和isDirectory()
。我想了解这背后的原因。
代码
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
答案 0 :(得分:2)
如果使用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");
}
}