如果当前Java应用程序的工作目录下不存在名为“Foo”的目录,那么最简洁的方法是什么来创建它?
或者稍微换个角度:在Java中,如何实现与.NET中Directory.CreateDirectory("Foo")
相同的功能?
如果当前Java应用程序的工作目录下不存在名为“Foo”的目录,那么最简洁的方法是什么来创建它?
或者稍微换个角度:在Java中,如何实现与.NET中Directory.CreateDirectory("Foo")
相同的功能?
Java的 io
包没有 Directory
类,但是您可以使用File
类上的mkdir()
方法代替:
(new File("Foo")).mkdir()
请注意mkdir()
有两种不同的失败模式:
checkWrite()
方法不允许创建指定的目录,则会抛出SecurityException
异常。mkdir()
将返回false。(更具体地说,它将仅在目录已创建时返回true。)与.NET的Directory.CreateDirectory()
行为进行对比,如果目录存在,则什么也不做。这种行为是有道理的——“创建一个目录”;“好的,目录被创建了”。它是否现在或之前创建并不重要;通过此过程还是另一个过程?如果你真的关心这一点,你会问一个不同的问题:“这个目录存在吗?”
mkdir()
一次不会创建多个目录。对于我所示例的名为“Foo”的目录,这很好;但是,如果您想在目录Foo内创建一个名为Bar的目录(即创建目录“Foo / Bar”),则必须记得改用mkdirs()
方法。public static File createDirectory(String directoryPath) throws IOException {
File dir = new File(directoryPath);
if (dir.exists()) {
return dir;
}
if (dir.mkdirs()) {
return dir;
}
throw new IOException("Failed to create directory '" + dir.getAbsolutePath() + "' for an unknown reason.");
}
我看到了你的createDirectory
方法的一种更简洁的形式:
File f = new File(xyz);
if (!f.exists() && !f.mkdirs()) throw new IOException("Could not create directory " + f);
检查一下 f
是否存在,但不是一个目录也是值得的。