java中java.io.File的mkdir()和mkdirs()之间的区别

Kri*_*kal 116 java directory android android-file

谁能告诉我之间的差异file.mkdir()file.mkdirs()

ami*_*mit 150

mkdirs()还会在此代表的路径中创建父目录File.

的javadocmkdirs():

创建此抽象路径名指定的目录,包括任何必需但不存在的父目录.请注意,如果此操作失败,则可能已成功创建一些必需的父目录.

的javadocmkdir():

创建此抽象路径名指定的目录.

例:

File  f = new File("non_existing_dir/someDir");
System.out.println(f.mkdir());
System.out.println(f.mkdirs());
Run Code Online (Sandbox Code Playgroud)

将产生false第一个[并且不会创建目录],而true对于第二个,您将创建non_existing_dir/someDir

  • 因为oracle再次打破了互联网上的链接:[mkdirs()](http://docs.oracle.com/javase/6/docs/api/java/io/File.html#mkdirs%28%29)和[ MKDIR()](http://docs.oracle.com/javase/6/docs/api/java/io/File.html#mkdir%28%29) (6认同)

Dav*_*ebb 58

mkdirs()将完整地创建指定的目录路径,其中mkdir()只创建最底层的目录,如果找不到它尝试创建的目录的父目录,则失败.

换句话说mkdir()是喜欢mkdirmkdirs()喜欢mkdir -p.

例如,假设我们有一个空/tmp目录.以下代码

new File("/tmp/one/two/three").mkdirs();
Run Code Online (Sandbox Code Playgroud)

将创建以下目录:

  • /tmp/one
  • /tmp/one/two
  • /tmp/one/two/three

这段代码在哪里:

new File("/tmp/one/two/three").mkdir();
Run Code Online (Sandbox Code Playgroud)

不会创建任何目录 - 因为它不会找到/tmp/one/two- 并将返回false.