Como criar um diretório em Java?

Como é que crio a pasta/pasta?

Uma vez que eu tenha testado System.getProperty("user.home");

Tenho de criar uma pasta (nome de pasta "nova pasta" ) se e apenas se a nova pasta não existir.

Author: Benjamin, 2010-09-03

18 answers

Depois de ~7 anos, vou atualizá-lo para uma melhor abordagem, o que é sugerido por Bozho.

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

Depreciado:

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
Author: Jigar Joshi, 2018-04-13 20:46:44
new File("/path/directory").mkdirs();

Aqui "directory" é o nome da pasta que deseja criar/existir.

 431
Author: Bozho, 2010-09-03 10:37:38

Com Java 7, você pode usar Files.createDirectories().

Por exemplo:

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

Podes tentar FileUtils#forceMkdir

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

Esta biblioteca tem muitas funções úteis.

 37
Author: ahvargas, 2017-02-23 13:19:08

Mkdir vs mkdirs


Se quiser criar uma única pasta use mkdir

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

Se quiser criar uma hierarquia de Utilização da estrutura de pastasmkdirs

 new File("/path/directory").mkdirs();
 21
Author: Burusothman, 2016-01-17 11:59:10
  1. Crie uma única pasta.

    new File("C:\\Directory1").mkdir();
    
  2. Crie um directório chamado "Directory2" e todos os seus sub-directórios "Sub2" e "Sub-Sub2" juntos.

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

Fonte: este tutorial perfeito , Você também encontra um exemplo de uso.

 17
Author: Mouna, 2018-05-20 06:45:42

O seguinte método deve fazer o que quiser, apenas certifique-se que está a verificar o valor de retorno 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
Author: Jon Freedman, 2010-09-03 10:45:08

Para java 7 e para cima:

Path path = Paths.get("/your/path/string");
if(!Files.exists(path)) {
    try {
      Files.createDirectories(path);
    } catch (IOException e) {
      e.printStackTrace();
    }
}
 5
Author: Marcos Maia, 2017-01-09 21:06:55
Embora esta pergunta tenha sido respondida. Eu gostaria de colocar algo extra, i.e. se existir um ficheiro com o nome do directório que está a tentar criar do que deverá pedir um erro. Para futuros visitantes.
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
Author: score, 2013-12-06 01:27:01

Só queria apontar para todos que chamam File.mkdir() ou File.mkdirs() para ter cuidado o objecto File é um directório e não um ficheiro. Por exemplo, se você chamar mkdirs() para o caminho /dir1/dir2/file.txt, ele irá criar uma pasta com o nome file.txt que provavelmente não é o que você queria. Se estiver a criar um ficheiro novo e também quiser criar automaticamente as pastas-mãe, poderá fazer algo do género:

            File file = new File(filePath);
            if (file.getParentFile() != null) {
                file.getParentFile().mkdirs();
            }
 3
Author: Matt Bonness, 2015-04-15 18:55:45
Limpo e limpo.
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
Author: Program-Me-Rev, 2018-05-03 11:31:30
Tenta com isto.
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();
}
}

Para mais informações Ver isto.

 2
Author: madhu, 2015-07-28 12:56:30

Bem, para criar directório/pasta em java temos dois métodos

Aqui o método makedirectory cria uma única pasta se não existir.

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

E

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

Aqui o método makedirectories irá criar todas as pastas que faltam na localização que o objecto de ficheiro representa.

Por exemplo, consulte a ligação abaixo (explicada muito bem). Espero que ajude!! http://www.flowerbrackets.com/create-directory-java-program/

 2
Author: Shiva, 2017-10-23 12:23:22
É assim que funciona para mim fazer um único directório ou mais.: é necessário importar o java. io. File;
/*introduza o código abaixo para adicionar uma dir1 diectorial ou verifique se existe dir1, se não existir, então crie-o e o mesmo com dir2 e 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
Author: Stefano Castagnino, 2016-01-26 02:55:59

Esta função permite-lhe criar uma pasta na pasta pessoal do utilizador.

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
Author: Boubakr, 2014-02-20 14:00:03

Se queres ter a certeza que foi criado, então isto:

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

O Beacuse mkDir() devolve um booleano, e o findbugs irá chorar por ele se não usar a variável. Também não é agradável...

mkDir() só devolve verdadeiro se mkDir() O criar. Se a pasta existir, devolve falso, de modo a verificar a pasta que criou, apenas ligue para exists() se mkDir() devolve falso.

assertThat() irá verificar o resultado e falhar se exists() devolve falso. ofc você pode usar outras coisas para lidar com o não tratado Directorio.

 0
Author: 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
Author: Fathah Rehman P, 2012-06-07 06:10:18

Você também pode referir a função makdir () para criar uma nova pasta numa pasta onde quiser.

 -7
Author: arun, 2012-05-05 10:53:47