4

我如何找出java.io.File.mkdir()退货的原因false。我可以手动创建目录。

更新:我的代码如下所示:

String directoryName = "C:/some/path/";
File directory= new File(directoryName );
if (!directory.exists() && !directory.mkdir()) {
    throw new RuntimeException("Failed to create directory: " + directoryName);
}
4

5 回答 5

9

mkdirs()如果父文件夹(some在您的示例中)不存在,您将需要使用。

于 2012-05-24T16:09:07.700 回答
3

答案很简单,您正在尝试创建嵌套文件夹(文件夹中的文件夹)。对于嵌套文件夹,请使用File.mkdirs(). 那行得通,(经过测试)。

于 2012-05-24T16:11:29.883 回答
1

我认为你不能,至少不能来自 Java。由于操作系统做出了决定,Java 只是简单地委托给它并返回结果。

您是否尝试过确保您的 File 对象指向您认为的位置?

更新:如果 C:/some 不存在,则必须先创建它,然后才能尝试创建 C:/some/path。或如所指出的那样使用 mkdirs() 。

于 2012-05-24T15:53:43.050 回答
1

如果您使用诸如 Windows 的进程监视器之类的东西,您可以查看操作系统级别创建目录的尝试。

这可能会给你你需要的信息。

您可能需要使用进程监视器中的过滤器,因为通常有很多磁盘活动正在进行:)

于 2012-05-24T16:10:19.773 回答
0

使用cygwin

mkdir 可能会返回 false,但无论如何都要继续创建文件夹。false 似乎仅表明该文件夹尚不存在。

directory.exists()您可能必须在通话后尝试mkdir()(甚至mkdirs()

于 2013-08-19T21:30:34.883 回答