Crie um diretório em Java

Crie um diretório em Java

1. Visão geral

Criar um diretório com Java é bastante direto. A linguagem nos fornece dois métodos que nos permitem criar um único diretório ou vários diretórios aninhados -mkdir()emkdirs().

Neste tutorial, veremos como ambos se comportam.

2. Crie um diretório único

Vamos começar com a criação de um único diretório.

Para nossos propósitos, usaremos o diretório do usuáriotemp. Podemos pesquisar comSystem.getProperty(“java.io.tmpdir”).

Vamos passar este caminho para um objeto JavaFile, que representará nosso diretório temporário:

private static final File TEMP_DIRECTORY = new File(System.getProperty("java.io.tmpdir"));

Agora vamos criar um novo diretório dentro dele. We’ll achieve this by calling the File::mkdir method on a new File object representing the directory to create:

File newDirectory = new File(TEMP_DIRECTORY, "new_directory");
assertFalse(newDirectory.exists());
assertTrue(newDirectory.mkdir());

Para garantir que nosso diretório ainda não exista, primeiro usamos o métodoexists().

Em seguida, chamamos o métodomkdir() que nos diz se a criação do diretório foi bem-sucedida ou não. Se o diretório já existisse, o método teria retornadofalse.

Se fizermos as mesmas chamadas novamente:

assertTrue(newDirectory.exists());
assertFalse(newDirectory.mkdir());

Então, como esperávamos, o método retornafalse na segunda chamada.

And, the mkdir() method not only return false when the directory already existsbut also in some other situations. Por exemplo, um arquivo pode existir com o nome do diretório que queremos criar. Ou podemos não ter as permissões para criar este diretório.

Com isso em mente, temos que encontrar uma maneira de garantir que nosso diretório exista no final, ou nós o criamos ou ele já estava lá. Para isso,we could use the isDirectory() method:

newDirectory.mkdir() || newDirectory.isDirectory()

Dessa forma, garantimos que o diretório de que precisamos esteja lá.

3. Criar vários diretórios aninhados

O que vimos até agora funciona bem em um único diretório, mas o que acontece se quisermos criar vários diretórios aninhados?

No exemplo a seguir, veremos queFile::mkdir não funciona para isso:

File newDirectory = new File(TEMP_DIRECTORY, "new_directory");
File nestedDirectory = new File(newDirectory, "nested_directory");
assertFalse(newDirectory.exists());
assertFalse(nestedDirectory.exists());
assertFalse(nestedDirectory.mkdir());

Comonew_directory não existe,mkdir não crianested_directory subjacente.

However, the File class provides us with another method to achieve that – mkdirs(). Este método se comportará comomkdir(), mas também criará todos os diretórios pais não existentes.

Em nosso exemplo anterior, isso significaria criar não apenasnested_directory, mas tambémnew_directory.

Observe que até agora usamos o construtorFile(File, String), maswe can also use the File(String) constructor and pass the complete path of our file using File.separator para separar as diferentes partes do caminho:

File newDirectory = new File(System.getProperty("java.io.tmpdir") + File.separator + "new_directory");
File nestedDirectory = new File(newDirectory, "nested_directory");
assertFalse(newDirectory.exists());
assertFalse(nestedDirectory.exists());
assertTrue(nestedDirectories.mkdirs());

Como podemos ver, os diretórios são criados conforme o esperado. Moreover, the method only returns true when at least one directory is created. As for the mkdir() method, it’ll return false in the other cases.

Portanto, isso significa que o métodomkdirs() usado em um diretório cujos pais existem funcionará da mesma forma que o métodomkdir().

4. Conclusão

Neste artigo, vimos dois métodos que nos permitem criar diretórios em Java. O primeiro,mkdir(), visa a criação de um único diretório, desde que seus pais já existam. O segundo,mkdirs(), é capaz de criar um diretório assim como seus pais não existentes.

O código deste artigo pode ser encontradoon our GitHub.