Может ли кто-нибудь сказать мне разницу между этими двумя методами:
file.mkdir()
file.mkdirs()
Может ли кто-нибудь сказать мне разницу между этими двумя методами:
file.mkdir()
file.mkdirs()
Ответы:
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
mkdir()
вернуть true
или false
? Javadoc, похоже, не охватывает этот аспект.
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
.
mkdir()
создает только один каталог за раз, если он родительский. в противном случае он может создать подкаталог (если существует только указанный путь) и не создавать никаких каталогов между любыми двумя каталогами. поэтому он не может создавать несколько каталогов в одном каталоге
mkdirs()
создавать несколько каталогов (также между двумя каталогами) за раз.