mkdir()没有创建新目录

时间:2013-07-19 14:02:08

标签: java file-handling

我正在使用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()的每个程序都有同样的问题。

7 个答案:

答案 0 :(得分:31)

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

答案 1 :(得分:15)

obj.mkdirs()

看看这个:

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

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

答案 2 :(得分:0)

Create directory example

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

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

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

答案 3 :(得分:0)

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

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

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

下面的资料和参考资料(详细解释)。

http://www.flowerbrackets.com/create-directory-java-program/

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

答案 4 :(得分:0)

调用唯一的file.mkdirs()通常不起作用。 在评估中称它为-

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

或者,  例如-

 boolean result = file.mkdirs();

答案 5 :(得分:0)

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

答案 6 :(得分:-1)

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

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

......例如。

来自Java DOC:

  

public boolean mkdir()

     

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

     

返回:

     

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

     

抛出:

     

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