Alguém pode me dizer a diferença entre estes dois métodos:
file.mkdir()
file.mkdirs()
Alguém pode me dizer a diferença entre estes dois métodos:
file.mkdir()
file.mkdirs()
Respostas:
mkdirs()
também cria diretórios pai no caminho que isso File
representa.
javadocs para mkdirs()
:
Cria o diretório nomeado por esse caminho abstrato, incluindo todos os diretórios pai necessários, mas inexistentes. Observe que, se essa operação falhar, ela poderá criar alguns dos diretórios-pai necessários.
javadocs para mkdir()
:
Cria o diretório nomeado por este caminho abstrato.
Exemplo:
File f = new File("non_existing_dir/someDir");
System.out.println(f.mkdir());
System.out.println(f.mkdirs());
renderá false
para o primeiro [e nenhum diretório será criado] e true
para o segundo, e você terá criadonon_existing_dir/someDir
mkdir()
retornará true
ou false
? O javadoc não parece cobrir esse aspecto.
mkdirs()
criará o caminho do diretório especificado em sua totalidade, onde mkdir()
somente criará o diretório mais inferior, falhando se não conseguir encontrar o diretório pai do diretório que está tentando criar.
Em outras palavras, mkdir()
é como mkdir
e mkdirs()
é como mkdir -p
.
Por exemplo, imagine que temos um /tmp
diretório vazio . O código a seguir
new File("/tmp/one/two/three").mkdirs();
criaria os seguintes diretórios:
/tmp/one
/tmp/one/two
/tmp/one/two/three
Onde este código:
new File("/tmp/one/two/three").mkdir();
não criaria nenhum diretório - como não seria encontrado /tmp/one/two
- e retornaria false
.
mkdir()
cria apenas um diretório por vez, se for o pai único. caso contrário, ele pode criar o subdiretório (se o caminho especificado existir apenas) e não criar nenhum diretório entre dois diretórios. portanto, ele não pode criar vários diretórios em um diretório
mkdirs()
crie os vários diretórios (entre dois diretórios também) por vez.