ti-enxame.com

Como criar um diretório em Java?

Como faço para criar diretório/pasta?

Depois de ter testado System.getProperty("user.home");

Eu tenho que criar um diretório (nome do diretório "nova pasta") se e somente se a nova pasta não existir.

351
jimmy

Após ~ 7 anos, vou atualizá-lo para uma melhor abordagem sugerida por Bozho.

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

Descontinuada:

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

Aqui "diretório" é o nome do diretório que você deseja criar/existir.

473
Bozho

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

Por exemplo:

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

Você pode tentar FileUtils # forceMkdir

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

Esta biblioteca tem muitas funções úteis.

37
ahvargas

mkdir vs mkdirs


Se você quiser criar um único diretório, use mkdir

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

Se você quiser criar uma hierarquia de estrutura de pastas, use mkdirs

 new File("/path/directory").mkdirs();
27
Burusothman
  1. Crie um único diretório.

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

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

Fonte: esta perfeita tutorial , você encontra também um exemplo de uso.

21
Mouna

Para o Java 7 e superior:

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

Parece desnecessário verificar a existência do diretório ou arquivo antes de criar, from createDirectories javadocs :

Cria um diretório criando todos os diretórios pai inexistentes primeiro. Ao contrário do método createDirectory, uma exceção não é lançada se o diretório não puder ser criado porque já existe. O parâmetro attrs é um atributo de arquivo opcional para definir atomicamente ao criar os diretórios inexistentes. Cada atributo de arquivo é identificado por seu nome. Se mais de um atributo com o mesmo nome for incluído na matriz, todos, exceto a última ocorrência, serão ignorados.

Se esse método falhar, poderá fazê-lo depois de criar alguns, mas não todos, os diretórios pai.

12
groo

O método a seguir deve fazer o que você quer, apenas certifique-se de 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();
    }
}
7
Jon Freedman

Bem, para criar diretório/pasta em Java, temos dois métodos

Aqui o método makedirectory cria um diretório único, se ele 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 criará todos os diretórios que estão faltando no caminho que o objeto de arquivo representa.

Por exemplo, consulte o link abaixo (explicou muito bem). Espero que ajude!! https://www.flowerbrackets.com/create-directory-Java-program/

4
Shiva

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

    }
}
4
Program-Me-Rev

Embora esta questão tenha sido respondida. Eu gostaria de colocar algo extra, ou seja, se houver um arquivo com o nome do diretório que você está tentando criar, ele deve solicitar 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
score

Só queria apontar para todos que chamam File.mkdir() ou File.mkdirs() para serem cuidadosos com o objeto File é um diretório e não um arquivo. Por exemplo, se você chamar mkdirs() para o caminho /dir1/dir2/file.txt, ele criará uma pasta com o nome file.txt que provavelmente não é o que você queria. Se você está criando um novo arquivo e também quer criar automaticamente pastas pai, você pode fazer algo assim:

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

Essa é a maneira de trabalhar para mim, fazer um único diretório ou mais ou eles: precisa importar o arquivo Java.io.File;
/* digite o código abaixo para adicionar um diretório dir1 ou verifique se existe dir1, se não, crie-o e 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");  }
2
Stefano Castagnino

Essa função permite criar um diretório no diretório inicial do usuário.

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

se você quer ter certeza de que é criado, então:

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

porque mkDir() retorna um booleano, e findbugs irá chorar por ele se você não usar a variável. Também não é bom ...

mkDir() retorna somente true se mkDir() o criar. Se o diretório existir, ele retornará false, portanto, para verificar o diretório que você criou, chame apenas exists() se mkDir() retornar false.

assertThat() verificará o resultado e falhará se exists() retornar falso. ofc você pode usar outras coisas para lidar com o diretório não criado.

0
l0wacska