Разница между mkdir() и mkdirs() в java для java.io.File

Может ли кто-нибудь сказать мне разницу между file.mkDir() и file.mkDirs()?

Ответ 1

mkdirs() также создает родительские каталоги в пути, который представляет этот File.

javadocs для mkdirs():

Создает каталог с именем этого абстрактного пути, включая любые необходимых, но несуществующих родительских каталогов. Обратите внимание, что если это не удалось выполнить некоторые из необходимые родительские каталоги.

javadocs для mkdir():

Создает каталог с именем этого абстрактного пути.

Пример:

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

даст false для первого [и никакой каталог не будет создан], а true для второго, и вы создали non_existing_dir/someDir

Ответ 2

mkdirs() создаст указанный путь каталога полностью, где mkdir() создаст только самый нижний каталог, если он не сможет найти родительский каталог каталога, который он пытается создать.

Другими словами, mkdir() похож на mkdir, а mkdirs() похож на mkdir -p.

Например, представьте, что у нас есть пустой каталог /tmp. Следующий код

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

создаст следующие каталоги:

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

Где этот код:

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

не создавал бы никаких каталогов - поскольку он не нашел бы /tmp/one/two - и возвратил бы false.

Ответ 3

mkdir()

создает только один каталог за раз, если он является только родителем. Другим способом он может создать подкаталог (если указанный путь существует только) и не создавать каталоги между любыми двумя каталогами. поэтому он не может создавать smultiple-каталоги в одном каталоге

mkdirs()

создать несколько каталогов (одновременно между двумя каталогами).