Créer un répertoire en Java

1. Vue d'ensemble

La création d'un répertoire avec Java est assez simple. Le langage nous fournit deux méthodes nous permettant de créer soit un seul répertoire, soit plusieurs répertoires imbriqués - mkdir () et mkdirs () .

Dans ce tutoriel, nous verrons comment ils se comportent tous les deux.

2. Créez un répertoire unique

Commençons par la création d'un répertoire unique.

Pour nos besoins, nous utiliserons le répertoire temporaire de l'utilisateur . Nous pouvons le rechercher avec System.getProperty («java.io.tmpdir») .

Nous passerons ce chemin à un objet Java File , qui représentera notre répertoire temporaire:

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

Créons maintenant un nouveau répertoire à l'intérieur. Nous y parviendrons en appelant la méthode File :: mkdir sur un nouvel objet File représentant le répertoire à créer:

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

Pour nous assurer que notre répertoire n'existe pas encore, nous avons d'abord utilisé la méthode exist () .

Ensuite, nous avons appelé la méthode mkdir () qui nous indique si la création du répertoire a réussi ou non. Si le répertoire existait déjà, la méthode aurait renvoyé false .

Si nous refaisons les mêmes appels:

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

Ensuite, comme nous nous y attendions, la méthode renvoie false lors du deuxième appel.

Et, la méthode mkdir () renvoie non seulement false lorsque le répertoire existe déjà, mais également dans d'autres situations. Par exemple, un fichier peut exister avec le nom du répertoire que nous voulons créer. Ou nous pourrions ne pas avoir les autorisations nécessaires pour créer ce répertoire.

Dans cet esprit, nous devons trouver un moyen de nous assurer que notre répertoire existe à la fin, soit nous l'avons créé, soit il était déjà là. Pour cela, nous pourrions utiliser la méthode isDirectory () :

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

De cette façon, nous nous assurons que le répertoire dont nous avons besoin est là.

3. Créez plusieurs répertoires imbriqués

Ce que nous avons vu jusqu'à présent fonctionne bien sur un seul répertoire, mais que se passe-t-il si nous voulons créer plusieurs répertoires imbriqués?

Dans l'exemple suivant, nous verrons que File :: mkdir ne fonctionne pas pour cela:

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

Comme le new_directory n'existe pas, mkdir ne crée pas le nested_directory sous-jacent .

Cependant, la classe File nous fournit une autre méthode pour y parvenir - mkdirs () . Cette méthode se comportera comme mkdir () mais créera également tous les répertoires parents inexistants.

Dans notre exemple précédent, cela signifierait créer non seulement nested_directory , mais également new_directory.

Notez que jusqu'à présent nous utilisions le constructeur File (File, String) , mais nous pouvons également utiliser le constructeur File (String) et passer le chemin complet de notre fichier en utilisant File.separator pour séparer les différentes parties du chemin:

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());

Comme nous pouvons le voir, les répertoires sont créés comme prévu. De plus, la méthode ne renvoie true que lorsqu'au moins un répertoire est créé. Quant à la méthode mkdir () , elle retournera false dans les autres cas.

Cela signifie donc que la méthode mkdirs () utilisée sur un répertoire dont les parents existent fonctionnera de la même manière que la méthode mkdir () .

4. Conclusion

Dans cet article, nous avons vu deux méthodes nous permettant de créer des répertoires en Java. Le premier, mkdir () , cible la création d'un répertoire unique, à condition que ses parents existent déjà. Le second, mkdirs () , est capable de créer un répertoire ainsi que ses parents inexistants.

Le code de cet article se trouve sur notre GitHub.