Может ли кто-нибудь сказать мне разницу между этими двумя методами:
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()
создавать несколько каталогов (также между двумя каталогами) за раз.