我使用的是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()
的每个程序都遇到同样的问题。
如果要创建多个目录,则必须使用 mkdirs() 和 s。可能还值得检查您是否 canWrite() 到该位置,因为某些地方已获得许可。这两个都在 File 类中
它
obj.mkdirs()
看看这个:
File f = new File("non_existing_dir/someDir");
System.out.println(f.mkdir());
System.out.println(f.mkdirs());
第一个打印不会创建目录并返回
false
,但第二个打印会创建目录并返回 true
看起来你需要在你的路径上做一些工作,因为文件看起来不会推断“abc”。
此外,请确保您对尝试创建目录的路径拥有权限。如果你不这样做,它就会失败。我已经有一段时间没有使用 Java 了,所以不确定是否需要在整个路径中进行 mkdir 调用(即 /here/、/here/now-here/、/here/now-此处/最终)或不。认为它可能是递归的,但这值得验证。
实际上,从其他答案看来,mkdirs 是递归的,而 mkdir 不是。我会选择 mkdirs,特别是如果输入从一开始就无法得知,否则您最终将使用 mkdir 编写一个执行完全相同操作的函数。
调用唯一的
file.mkdirs()
通常不起作用。
在评估中称其为 -
if(file.mkdirs()){ //do something}
或者, 在诸如 -
之类的作业中 boolean result = file.mkdirs();
确保目录名称中没有点。例如:“ab.c”应更改为“abc”。
使用 Files.createDirectory(Paths.get(strTempNewDirPath)); 而不是 mkdir()。
mkdir 需要抽象路径,而不是相对路径。尝试使用...
File f2 = new File (f1, "C:\\");
...例如。
来自 Java DOC:
公共布尔 mkdir()
创建以此抽象路径名命名的目录。
退货:
当且仅当目录已创建时才为 true;否则为假
投掷:
SecurityException - 如果安全管理器存在并且其 SecurityManager.checkWrite(java.lang.String) 方法不允许创建指定目录