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() 没有创建新目录的主要内容,如果未能解决你的问题,请参考以下文章