web-dev-qa-db-fra.com

Comment créer un répertoire en Java?

Comment créer un répertoire/dossier?

Une fois que j'ai testé System.getProperty("user.home");

Je dois créer un répertoire (nom de répertoire "nouveau dossier") si et seulement si le nouveau dossier n'existe pas.

351
jimmy

Après environ 7 ans, je le mettrai à jour pour améliorer l'approche proposée par Bozho.

new File("/path/directory").mkdirs();

Obsolète

File theDir = new File("new folder");

// if the directory does not exist, create it
if (!theDir.exists()) {
    System.out.println("creating directory: " + theDir.getName());
    boolean result = false;

    try{
        theDir.mkdir();
        result = true;
    } 
    catch(SecurityException se){
        //handle it
    }        
    if(result) {    
        System.out.println("DIR created");  
    }
}
413
Jigar Joshi
new File("/path/directory").mkdirs();

Ici "répertoire" est le nom du répertoire que vous voulez créer/exister.

473
Bozho

Avec Java 7, vous pouvez utiliser Files.createDirectories() .

Par exemple:

Files.createDirectories(Paths.get("/path/to/directory"));
127
Benoit Blanchon

Vous pouvez essayer FileUtils # forceMkdir

FileUtils.forceMkdir("/path/directory");

Cette bibliothèque possède de nombreuses fonctions utiles.

37
ahvargas

mkdir vs mkdirs


Si vous voulez créer un seul répertoire, utilisez mkdir

new File("/path/directory").mkdir();

Si vous souhaitez créer une hiérarchie de structure de dossiers, utilisez mkdirs

 new File("/path/directory").mkdirs();
27
Burusothman
  1. Créez un seul répertoire.

    new File("C:\\Directory1").mkdir();
    
  2. Créez un répertoire nommé “Répertoire2 et tous ses sous-répertoires“ Sub2 ”et“ Sub-Sub2 ”ensemble.

    new File("C:\\Directory2\\Sub2\\Sub-Sub2").mkdirs()
    

Source: this perfect tutorial , vous trouvez également un exemple d'utilisation.

21
Mouna

Pour Java 7 et plus:

Path path = Paths.get("/your/path/string");
Files.createDirectories(path);

Il semble inutile de vérifier l'existence du répertoire ou du fichier avant de créer, à partir de javadocs de createDirectories :

Crée un répertoire en créant d’abord tous les répertoires parents non existants. Contrairement à la méthode createDirectory, une exception n'est pas levée si le répertoire n'a pas pu être créé car il existe déjà. Le paramètre attrs est un attribut de fichier facultatif à définir de manière atomique lors de la création de répertoires inexistants. Chaque attribut de fichier est identifié par son nom. Si plus d'un attribut du même nom est inclus dans le tableau, toutes les occurrences sauf la dernière sont ignorées.

Si cette méthode échoue, elle peut le faire après avoir créé certains des répertoires parents, mais pas tous.

12
groo

La méthode suivante doit faire ce que vous voulez, assurez-vous juste de vérifier la valeur de retour de mkdir () / mkdirs ()

private void createUserDir(final String dirName) throws IOException {
    final File homeDir = new File(System.getProperty("user.home"));
    final File dir = new File(homeDir, dirName);
    if (!dir.exists() && !dir.mkdirs()) {
        throw new IOException("Unable to create " + dir.getAbsolutePath();
    }
}
7
Jon Freedman

Bien pour créer un répertoire/dossier en Java, nous avons deux méthodes

Ici, la méthode makedirectory crée un répertoire unique s'il n'existe pas.

File dir = new File("path name");
boolean isCreated = dir.mkdir();

Et

File dir = new File("path name");
boolean isCreated = dir.mkdirs();

Ici, la méthode makedirectories créera tous les répertoires manquants dans le chemin représenté par l’objet fichier.

Par exemple, reportez-vous au lien ci-dessous (très bien expliqué). J'espère que ça aide!! https://www.flowerbrackets.com/create-directory-Java-program/

4
Shiva

Propre et net:

import Java.io.File;

public class RevCreateDirectory {

    public void revCreateDirectory() {
        //To create single directory/folder
        File file = new File("D:\\Directory1");
        if (!file.exists()) {
            if (file.mkdir()) {
                System.out.println("Directory is created!");
            } else {
                System.out.println("Failed to create directory!");
            }
        }
        //To create multiple directories/folders
        File files = new File("D:\\Directory2\\Sub2\\Sub-Sub2");
        if (!files.exists()) {
            if (files.mkdirs()) {
                System.out.println("Multiple directories are created!");
            } else {
                System.out.println("Failed to create multiple directories!");
            }
        }

    }
}
4
Program-Me-Rev

Bien que cette question a été répondu. Je voudrais mettre quelque chose de plus, c’est-à-dire s’il existe un fichier avec le nom du répertoire que vous essayez de créer, alors il devrait demander une erreur. Pour les futurs visiteurs.

public static void makeDir()
{
    File directory = new File(" dirname ");
    if (directory.exists() && directory.isFile())
    {
        System.out.println("The dir with name could not be" +
        " created as it is a normal file");
    }
    else
    {
        try
        {
            if (!directory.exists())
            {
                directory.mkdir();
            }
            String username = System.getProperty("user.name");
            String filename = " path/" + username + ".txt"; //extension if you need one

        }
        catch (IOException e)
        {
            System.out.println("Prompt for error");
        }
    }
}
4
score

Je voulais simplement indiquer à tous ceux qui appellent File.mkdir() ou File.mkdirs() de faire attention, l'objet File est un répertoire et non un fichier. Par exemple, si vous appelez mkdirs() pour le chemin /dir1/dir2/file.txt, il créera un dossier avec le nom file.txt qui n'est probablement pas ce que vous vouliez. Si vous créez un nouveau fichier et souhaitez également créer automatiquement des dossiers parents, vous pouvez procéder de la manière suivante:

            File file = new File(filePath);
            if (file.getParentFile() != null) {
                file.getParentFile().mkdirs();
            }
3
Matt Bonness

Ceci me permet de faire un ou plusieurs répertoires: nécessité d'importer Java.io.File;
/* entrez le code ci-dessous pour ajouter un diectory dir1 ou vérifiez s’il existe une dir1, sinon créez-la ainsi avec les mêmes dir2 et dir3 * /

    File filed = new File("C:\\dir1");
    if(!filed.exists()){  if(filed.mkdir()){ System.out.println("directory is created"); }} else{ System.out.println("directory exist");  }

    File filel = new File("C:\\dir1\\dir2");
    if(!filel.exists()){  if(filel.mkdir()){ System.out.println("directory is created");   }} else{ System.out.println("directory exist");  }

    File filet = new File("C:\\dir1\\dir2\\dir3");
    if(!filet.exists()){  if(filet.mkdir()){ System.out.println("directory is  created"); }}  else{ System.out.println("directory exist");  }
2
Stefano Castagnino

Cette fonction vous permet de créer un répertoire sur le répertoire de base de l'utilisateur.

private static void createDirectory(final String directoryName) {
    final File homeDirectory = new File(System.getProperty("user.home"));
    final File newDirectory = new File(homeDirectory, directoryName);
    if(!newDirectory.exists()) {
        boolean result = newDirectory.mkdir();

        if(result) {
            System.out.println("The directory is created !");
        }
    } else {
        System.out.println("The directory already exist");
    }
}
0
Boubakr

si vous voulez être sûr que c'est créé, alors ceci:

final String path = "target/logs/";
final File logsDir = new File(path);
final boolean logsDirCreated = logsDir.mkdir();
if (!logsDirCreated) {
    final boolean logsDirExists = logsDir.exists();
    assertThat(logsDirExists).isTrue();
}

beacuse mkDir() renvoie un booléen, et findbugs le réclamera si vous n'utilisez pas la variable. Aussi ce n'est pas Nice ...

mkDir() ne renvoie true que si mkDir() le crée. Si le répertoire existe, il renvoie false. Pour vérifier le répertoire que vous avez créé, appelez uniquement exists() si mkDir() renvoie false.

assertThat() vérifie le résultat et échoue si exists() renvoie false. ofc, vous pouvez utiliser d'autres éléments pour gérer le répertoire incréé.

0
l0wacska