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 du répertoire "Nouveau dossier" ) si et seulement si le nouveau dossier n'existe pas.

304
demandé sur Benjamin 2010-09-03 14:27:39

18 réponses

Après ~7 année, je vais le mettre à jour pour une meilleure approche qui est suggéré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");  
    }
}
365
répondu Jigar Joshi 2018-04-13 20:46:44
new File("/path/directory").mkdirs();

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

431
répondu Bozho 2010-09-03 10:37:38

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

Par exemple:

Files.createDirectories(Paths.get("/path/to/directory"));
110
répondu Benoit Blanchon 2015-09-08 10:01:09

Vous pouvez essayer FileUtils#forceMkdir

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

Ce bibliothèque ont beaucoup de fonctions utiles.

37
répondu ahvargas 2017-02-23 13:19:08

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 dossier utiliser mkdirs

 new File("/path/directory").mkdirs();
21
répondu Burusothman 2016-01-17 11:59:10
  1. Créez un seul répertoire.

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

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

Source: ce parfait tutoriel , vous trouverez également un exemple d'utilisation.

17
répondu Mouna 2018-05-20 06:45:42

La méthode suivante devrait faire ce que vous voulez, assurez-vous 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();
    }
}
6
répondu Jon Freedman 2010-09-03 10:45:08

Pour java 7 et plus:

Path path = Paths.get("/your/path/string");
if(!Files.exists(path)) {
    try {
      Files.createDirectories(path);
    } catch (IOException e) {
      e.printStackTrace();
    }
}
5
répondu Marcos Maia 2017-01-09 21:06:55

Bien que cette question ait été répondue. Je voudrais mettre quelque chose en plus, c'est à dire s'il existe un fichier avec le nom de répertoire que vous essayez de créer, il devrait provoquer 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
répondu score 2013-12-06 01:27:01

Je voulais juste signaler à tout le monde appelant File.mkdir() ou File.mkdirs() pour 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 va créer un dossier avec le nom file.txt, qui n'est probablement pas ce que tu voulais. Si vous créez un nouveau fichier et également créer automatiquement des dossiers parent que vous pouvez faire quelque chose comme ceci:

            File file = new File(filePath);
            if (file.getParentFile() != null) {
                file.getParentFile().mkdirs();
            }
3
répondu Matt Bonness 2015-04-15 18:55:45

Propre et propre:

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!");
            }
        }

    }
}
3
répondu Program-Me-Rev 2018-05-03 11:31:30

Essayez avec ceci.

import java.io.File;

public class MakingDirectory {
 public static void main(String[] args) {
      String s="d:\\msreddy\\sample1";
      File file=new File(s);
      file.mkdirs();
}
}

Pour plus d'informations voir cette.

2
répondu madhu 2015-07-28 12:56:30

Eh bien pour créer un répertoire / dossier en java, nous avons deux méthodes

Ici, la méthode makedirectory crée un seul répertoire 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 que représente l'objet file.

Par exemple, reportez-vous au lien ci-dessous (très bien expliqué). Espérons que cela aide!! http://www.flowerbrackets.com/create-directory-java-program/

2
répondu Shiva 2017-10-23 12:23:22

Cette façon de travailler pour moi faire un seul répertoire ou plus ou eux: besoin d'importer java.io.Fichier;
/ * entrez le code ci-dessous pour ajouter une diectory dir1 ou vérifiez s'il existe dir1, si ce n'est pas le cas, alors créez-le et même avec 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");  }
1
répondu Stefano Castagnino 2016-01-26 02:55:59

Cette fonction vous permet de créer un répertoire sur le répertoire principal 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
répondu Boubakr 2014-02-20 14:00:03

Si vous voulez être sûr qu'il 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 pleurera si vous n'utilisez pas la variable. Aussi, sa ne fait pas beau...

mkDir() renvoie uniquement true si mkDir() Le crée. Si le répertoire existe, il renvoie false, donc pour vérifier le répertoire que vous avez créé, appelez seulement exists() Si mkDir() retourne false.

assertThat() vérifie le résultat et échoue si exists() renvoie false. ofc vous pouvez utiliser d'autres choses pour gérer le répertoire Non créé.

0
répondu l0wacska 2018-04-04 09:59:24
public class Test1 {
    public static void main(String[] args)
    {
       String path = System.getProperty("user.home");
       File dir=new File(path+"/new folder");
       if(dir.exists()){
           System.out.println("A folder with name 'new folder' is already exist in the path "+path);
       }else{
           dir.mkdir();
       }

    }
}
-2
répondu Fathah Rehman P 2012-06-07 06:10:18

Vous pouvez également vous référer à la fonction makdir () pour créer un nouveau répertoire dans un dossier où vous voulez.

-7
répondu arun 2012-05-05 10:53:47