mkdir() 没有创建新目录

Posted

技术标签:

【中文标题】mkdir() 没有创建新目录【英文标题】:mkdir() is not creating the new directory 【发布时间】:2013-07-18 20:32:50 【问题描述】:

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

【问题讨论】:

“abc”是否存在并且是一个目录?您是否在程序的工作目录中寻找新目录? (打印 new File("").getAbsolutePath() 找出 WD) 对于诊断,打印f2.getAbsolutPath()。也许它试图在您没有写入权限的位置创建目录? Java 7 引入了使用异常而不是布尔返回值的 Files 类。这对于获取有关未来调试失败的文本描述很有用。 【参考方案1】:

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

【讨论】:

【参考方案2】:

它的obj.mkdirs()

看看这个:

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

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

【讨论】:

仍然无法从 f.mkdirs() 函数创建目录。它返回 false。【参考方案3】:

Create directory example

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

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

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

【讨论】:

【参考方案4】:

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

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

或者, 在诸如 -

之类的任务中
 boolean result = file.mkdirs();

【讨论】:

【参考方案5】:

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

【讨论】:

这是否记录在任何地方?如果是这样,我找不到它。【参考方案6】:

在您的情况下,您可以在 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

【讨论】:

【参考方案7】:

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

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

...例如。

来自 Java 文档:

公共布尔 mkdir()

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

返回:

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

投掷:

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

【讨论】:

以上是关于mkdir() 没有创建新目录的主要内容,如果未能解决你的问题,请参考以下文章

《Linux学习并不难》文件/目录管理:mkdir命令创建目录

Linux mkdir命令

UBUNTU下创建目录没有权限如何解决

linux目录操作命令 mkdir

mkdir命令

mkdir命令