Может ли кто-нибудь сказать мне разницу между file.mkDir()
и file.mkDirs()
?
Разница между mkdir() и mkdirs() в java для java.io.File
Ответ 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()
создать несколько каталогов (одновременно между двумя каталогами).