19

我正在使用 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());
    }
}

它的输出为假,但尚未创建目录。我该如何解决这个问题?这不仅在这个程序中——我在其中调用该方法的每个程序mkdir()都有同样的问题。

4

7 回答 7

38

如果要创建多个目录,则必须将 mkdirs() 与 s 一起使用可能还值得检查您的canWrite()到该位置,因为某些地方是允许的。这两个都在 File 类上

于 2013-07-19T14:05:31.967 回答
20

它的obj.mkdirs()

看看这个:

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

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

于 2013-07-19T14:06:15.720 回答
0

创建目录示例

看起来你需要在你的路径上工作一点,因为它看起来不像 File 会推断“abc”。

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

实际上,从其他答案看来 mkdirs 是递归的,而 mkdir 不是。我会选择 mkdirs ,特别是如果从一开始就不会知道输入,否则你最终会用 mkdir 编写一个函数来做同样的事情。

于 2013-07-19T14:11:27.083 回答
0

在您的情况下,您可以在File课堂上使用 makedirectories 方法。

File dir = new File("path name");
boolean isCreated = dir.mkdirs();

这里 makedirectories 方法将创建文件对象所代表的路径中缺少的所有目录。

来源和参考如下(详细解释)。

https://www.flowerbrackets.com/how-to-create-directory-java/

https://docs.oracle.com/javase/6/docs/api/java/io/File.html#canWrite%28%29

于 2017-10-23T13:04:58.260 回答
0

调用唯一file.mkdirs()通常不起作用。在评估中调用它,例如 -

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

或者,在诸如 -

 boolean result = file.mkdirs();
于 2019-09-26T05:42:48.920 回答
0

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

于 2019-11-04T11:53:38.277 回答
-1

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

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

... 例如。

来自 Java 文档:

公共布尔 mkdir()

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

回报:

当且仅当目录被创建时为真;否则为假

抛出:

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

于 2013-07-19T14:07:29.970 回答