我怎样才能找出为什么java.io.File.mkdir()返回false

我如何知道为什么 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);
}
0
额外 编辑
意见: 1
在尝试创建它之前,您是否检查过目录是否存在?
额外 作者 Holly Cummins,

5 答案

答案很简单,你试图创建嵌套的文件夹(文件夹内的文件夹)。对于嵌套文件夹,使用 File.mkdirs()。这工作,(测试)。

0
额外

使用 cygwin

mkdir可能会返回false,但继续创建该文件夹。错误似乎只是表明该文件夹不存在,但。

您可能需要在 mkdir()调用(或甚至 mkdirs())之后尝试 directory.exists()

0
额外

我不认为你可以,至少不是来自Java。作为操作系统的决心,Java只是委托给它并返回结果。

你有没有试过确保你的File对象指向你认为的地方?

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

0
额外
谁说你不能在java中使用 mkdir
额外 作者 Buhake Sindi,
Quote:我不认为你可以,至少不是从Java 。这根本不是真的。
额外 作者 Buhake Sindi,
问题是:“我怎么知道为什么java.io.File.mkdir()返回false”,所以我回答说:“我认为你不能[找出]”
额外 作者 Jonathan W,
他说你不知道为什么它失败了。
额外 作者 koregan,

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

0
额外

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

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

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

0
额外