【发布时间】:2017-07-13 15:32:27
【问题描述】:
AUX 是 Windows 中用于命名 Windows 中的目录/文件的禁止关键字。我在下面编写的 Java 代码以两种不同的方式创建此目录,一种使用内置的 mkdir() 方法,另一种使用 exec()。
当调用isDirectory() 时,指向同一目录的文件对象分别返回true 和false。我想了解这背后的原因。
代码
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
【问题讨论】:
-
尝试在
Runtime.getRuntime().exec("cmd /c md \\\\.\\\\C:\\Temp\\AUX");之后添加Thead.sleep();语句,因为Windows 命令处理器可能需要几秒钟才能启动并执行命令。 -
是的,它有效。谢谢。
-
没问题,乐于助人。