mkdir() 没有创建新目录

问题描述 投票:0回答:7

我使用的是Eclipse和jdk1.7。我正在使用文件处理制作一个基本程序,其中将在目录内创建一个输出目录。但是当我运行该程序时,输出显示 false 并且未创建目录。我认为输出是错误的,因为存在同名目录,但这不是原因。所以我需要帮助。这是我的代码:

import java.io.File;

public class P {
    public static void main(String[] args) {
        File f1 = new File ("abc");
        File f2 = new File (f1,"abc");
        System.out.println(f2.mkdir());
    }
}

其输出为 false,但尚未创建任何目录。 我该如何解决这个问题?这不仅在这个程序中 - 我调用方法

mkdir()
的每个程序都遇到同样的问题。

java file-handling
7个回答
42
投票

如果要创建多个目录,则必须使用 mkdirs() 和 s。可能还值得检查您是否 canWrite() 到该位置,因为某些地方已获得许可。这两个都在 File 类中


20
投票

obj.mkdirs()

看看这个:

File  f = new File("non_existing_dir/someDir");
System.out.println(f.mkdir());
System.out.println(f.mkdirs());

第一个打印不会创建目录并返回

false
,但第二个打印会创建目录并返回
true


0
投票

创建目录示例

看起来你需要在你的路径上做一些工作,因为文件看起来不会推断“abc”。

此外,请确保您对尝试创建目录的路径拥有权限。如果你不这样做,它就会失败。我已经有一段时间没有使用 Java 了,所以不确定是否需要在整个路径中进行 mkdir 调用(即 /here/、/here/now-here/、/here/now-此处/最终)或不。认为它可能是递归的,但这值得验证。

实际上,从其他答案看来,mkdirs 是递归的,而 mkdir 不是。我会选择 mkdirs,特别是如果输入从一开始就无法得知,否则您最终将使用 mkdir 编写一个执行完全相同操作的函数。


0
投票

调用唯一的

file.mkdirs()
通常不起作用。 在评估中称其为 -

if(file.mkdirs()){ //do something}

或者, 在诸如 -

之类的作业中
 boolean result = file.mkdirs();

0
投票

确保目录名称中没有点。例如:“ab.c”应更改为“abc”。


0
投票

使用 Files.createDirectory(Paths.get(strTempNewDirPath)); 而不是 mkdir()。


-1
投票

mkdir 需要抽象路径,而不是相对路径。尝试使用...

File f2 = new File (f1, "C:\\");

...例如。

来自 Java DOC:

公共布尔 mkdir()

创建以此抽象路径名命名的目录。

退货:

当且仅当目录已创建时才为 true;否则为假

投掷:

SecurityException - 如果安全管理器存在并且其 SecurityManager.checkWrite(java.lang.String) 方法不允许创建指定目录

© www.soinside.com 2019 - 2024. All rights reserved.