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

任何人都可以告诉我file.mkDir()file.mkDirs()之间的区别?

mkdirs()也在这个File表示的path中创build父目录

javadocs for mkdirs()

创build由此抽象path名命名的目录,包括任何必要但不存在的父目录。 请注意,如果此操作失败,则可能会成功创build一些必要的父目录。

javadocs for mkdir()

创build由此抽象path名命名的目录。

例:

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

会产生false的第一个[和没有dir将被创build],并为第二,这将创buildnon_existing_dir/someDir

mkdirs()将创build完整的指定目录path,其中mkdir()将只创build最底层目录,如果无法find正在尝试创build的目录的父目录,则会失败。

换句话说, mkdir()就像mkdirmkdirs()就像mkdir -p

例如,假设我们有一个空的/tmp目录。 下面的代码

 new File("/tmp/one/two/three").mkdirs(); 

会创build以下目录:

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

这里代码:

 new File("/tmp/one/two/three").mkdir(); 

不会创build任何目录 – 因为它不会find/tmp/one/two – 并且会返回false

 mkdir() 

一次只创build一个目录,如果它只是一个父目录。 其他方面,它可以创build子目录(如果指定的path只存在),并且不要在任何两个目录之间创build任何目录。 所以它不能在一个目录中创build多个目录

 mkdirs() 

一次创build多个目录(也在两个目录之间)。