如何找出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 :(得分:9)
如果父文件夹(示例中为some
)尚不存在,则需要使用mkdirs()
。
答案 1 :(得分:2)
答案很简单,您正在尝试创建嵌套文件夹(文件夹中的文件夹)。对于嵌套文件夹,请使用File.mkdirs()
。这有效,(测试过)。
答案 2 :(得分:1)
我认为你不能,至少不是来自Java。由于操作系统做出了这一决定,Java只是委托给它并返回结果。
您是否尝试过确保File对象指向您认为的位置?
更新:如果C:/ some不存在,必须首先创建它,然后才能尝试创建C:/ some / path。或者按照指出使用mkdirs()。
答案 3 :(得分:1)
如果您对Windows使用类似process monitor的内容,则可以查看操作系统级别尝试创建目录。
这可能会为您提供所需的信息。
您可能需要在进程监视器中使用过滤器,因为通常会有大量磁盘活动:)
答案 4 :(得分:0)
使用 cygwin ?
mkdir可能会返回false,但仍会继续创建文件夹。这似乎只是表明文件夹不存在。
您可能需要在directory.exists()
来电后尝试mkdir()
(或甚至mkdirs()
)