HOWTO · Java
Créer un répertoire en Java
Ce tutoriel explique comment créer un répertoire en Java
Sur cette page
Un répertoire est une structure de catalogage du système de fichiers destinée à stocker des fichiers, et en créer un est une tâche courante de manipulation de fichiers en Java. Le JDK propose deux API pour cela — les méthodes historiques de java.io.File et les utilitaires plus récents de java.nio.file.Files — et Apache Commons IO ajoute une troisième option. Ce tutoriel présente chaque approche et les différences de comportement qui comptent au moment de choisir.
Choisir une méthode de création de répertoire en Java
Pour la plupart du code nouveau, préférez java.nio.file.Files. Appelez Files.createDirectories(path) lorsque certains répertoires parents peuvent ne pas encore exister : la méthode crée tout le chemin en un seul appel et n’échoue pas simplement parce que le répertoire est déjà là. Appelez plutôt Files.createDirectory(path) lorsqu’une cible existante doit être traitée comme un échec. Les anciennes méthodes File.mkdir() et File.mkdirs() ne signalent le succès que par un boolean, facile à ignorer, tandis que les méthodes de Files lèvent des exceptions vérifiées qui nomment précisément le problème. FileUtils.forceMkdir() n’est un choix raisonnable que dans les bases de code qui dépendent déjà d’Apache Commons IO.
Les différences importantes concernent la façon dont chaque méthode gère les répertoires parents manquants et une cible déjà existante :
| Méthode | Répertoires parents manquants | Répertoire cible existant | Signal d’échec |
|---|---|---|---|
File.mkdir() |
échoue, retourne false |
retourne false |
valeur de retour boolean |
File.mkdirs() |
les crée | retourne false |
valeur de retour boolean |
Files.createDirectory() |
NoSuchFileException |
FileAlreadyExistsException |
sous-types vérifiés d’IOException |
Files.createDirectories() |
les crée | se termine normalement | sous-types vérifiés d’IOException |
FileUtils.forceMkdir() |
les crée | se termine normalement | IOException |
Créer un répertoire unique avec File.mkdir()
File.mkdir() crée exactement un répertoire à l’emplacement contenu dans l’instance de File. Elle ne retourne true que lorsqu’elle a réellement créé le répertoire ; elle retourne false lorsque le nom est déjà pris, lorsque le répertoire parent n’existe pas ou lorsque le système d’exploitation refuse la demande. Testez donc toujours la valeur de retour au lieu de supposer le succès.
Le programme suivant crée un répertoire nommé reports dans le répertoire de travail et affiche le résultat :
Le code et les libellés ou sorties affichés dans cette section restent en anglais.
import java.io.File;
public class MkdirExample {
public static void main(String[] args) {
File dir = new File("reports");
boolean created = dir.mkdir();
System.out.println("mkdir() returned: " + created);
System.out.println("Directory exists: " + dir.isDirectory());
}
}
mkdir() returned: true
Directory exists: true
Un résultat false ne dit rien sur la cause — vérifiez dir.isDirectory() ensuite lorsqu’un répertoire préexistant est acceptable, ou passez à Files.createDirectory() pour des échecs typés. mkdir() peut aussi lever l’exception non vérifiée SecurityException lorsqu’un gestionnaire de sécurité refuse l’accès en écriture.
Créer une arborescence de répertoires avec File.mkdirs()
File.mkdirs() crée le répertoire cible et chaque parent manquant le long du chemin en un seul appel :
Le code et les libellés ou sorties affichés dans cette section restent en anglais.
import java.io.File;
public class MkdirsExample {
public static void main(String[] args) {
File dir = new File("reports/2026/october");
boolean created = dir.mkdirs();
System.out.println("mkdirs() returned: " + created);
System.out.println("Directory exists: " + dir.isDirectory());
}
}
mkdirs() returned: true
Directory exists: true
Notez que mkdirs() ne retourne true que lorsqu’elle a créé le répertoire ainsi que tous les parents nécessaires. L’exécuter sur une arborescence existante retourne false alors que rien n’a mal tourné, et un résultat false n’indique pas quel niveau a échoué. Vérifiez avec isDirectory() lorsque le succès signifie simplement que le répertoire est présent.
Créer un répertoire unique avec Files.createDirectory()
Files.createDirectory(path) est l’équivalent NIO de mkdir() : elle crée exactement un répertoire et échoue lorsque le parent est manquant. Comme ses échecs sont des exceptions vérifiées, le compilateur vous oblige à les gérer, et le type d’exception identifie le problème — FileAlreadyExistsException lorsque le nom est pris et NoSuchFileException lorsque le parent est manquant.
Le code et les libellés ou sorties affichés dans cette section restent en anglais.
import java.io.IOException;
import java.nio.file.FileAlreadyExistsException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class CreateDirectoryExample {
public static void main(String[] args) {
Path path = Paths.get("logs");
try {
Files.createDirectory(path);
System.out.println("Created directory: " + path);
} catch (FileAlreadyExistsException e) {
System.out.println("Already exists: " + path);
} catch (IOException e) {
System.out.println("Could not create directory: " + e);
}
}
}
Created directory: logs
Intercepter FileAlreadyExistsException séparément permet de garder silencieux le cas courant où le répertoire est « déjà là », tandis que les autres sous-types d’IOException continuent de remonter comme des échecs.
Créer une arborescence de répertoires avec Files.createDirectories()
Files.createDirectories(path) crée la cible et chaque parent manquant en un seul appel et, contrairement à mkdirs(), elle se termine normalement lorsque le répertoire existe déjà — c’est l’appel recommandé lorsque vous avez simplement besoin que le chemin soit présent. Elle lève tout de même FileAlreadyExistsException lorsqu’un fichier ordinaire occupe le chemin, ainsi que d’autres sous-types d’IOException en cas d’échec réel comme des permissions refusées.
Le code et les libellés ou sorties affichés dans cette section restent en anglais.
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class CreateDirectoriesExample {
public static void main(String[] args) {
Path path = Paths.get("data/archive/2026");
try {
Files.createDirectories(path);
System.out.println("Directory ready: " + path);
} catch (IOException e) {
System.out.println("Could not create directory: " + e);
}
}
}
Directory ready: data/archive/2026
Utiliser FileUtils.forceMkdir() d’Apache Commons IO
FileUtils.forceMkdir() ne fait pas partie du JDK ; elle se trouve dans Apache Commons IO, le projet a donc besoin de la dépendance commons-io (par exemple l’artefact commons-io:commons-io dans Maven ou Gradle). Comme la bibliothèque n’est pas sur le classpath standard, l’appel est présenté en ligne plutôt que sous forme d’exemple exécutable :
FileUtils.forceMkdir(new File("data/archive/2026"));
Comme createDirectories(), elle crée le répertoire ainsi que tout parent manquant et se termine silencieusement lorsque le répertoire existe déjà — malgré son nom, « force » désigne la création des parents requis, pas l’écrasement de quoi que ce soit. Elle lève IOException lorsqu’un fichier qui n’est pas un répertoire occupe le chemin ou lorsque le répertoire ne peut pas être créé. Préférez les méthodes standard de Files, sauf si la base de code utilise déjà Commons IO.