我正在使用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()
的每个程序都有同样的问题。
答案 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)
看起来你需要在你的路径上工作一点,因为它看起来不像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)方法不允许创建指定目录