In Java, we can use the NIO Files.createDirectory to create a directory or Files.createDirectories to create a directory including all nonexistent parent directories.

  try {

    Path path = Paths.get("/home/favtuts/a/b/c/");

    //java.nio.file.Files;
    Files.createDirectories(path);

    System.out.println("Directory is created!");

  } catch (IOException e) {

    System.err.println("Failed to create directory!" + e.getMessage());

  }

1. Create Directory – Java NIO

1.1 We can use Files.createDirectory to create a directory.

  • If the parent directories not exist, throws NoSuchFileException.
  • If the directory exists, throws FileAlreadyExistsException.
  • If IO errors, throws IOException.
  Path path = Paths.get("/home/favtuts/test2/");
  Files.createDirectory(path);

1.2 We can use Files.createDirectories creates a directory including all nonexistent parent directories.

  • If the parent directories not exist, create it first.
  • If the directory exists, no exception thrown.
  • If IO errors, throws IOException
  Path path = Paths.get("/home/favtuts/test2/test3/test4/");
  Files.createDirectories(path);

1.3 This example uses Files.createDirectories to create a directory /test4/ including all nonexistent parent directories /test2/test3/.

DirectoryCreate1.java

package com.favtuts.io.directory;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class DirectoryCreate {

    public static void main(String[] args) {

        String dir = "/home/tvt/workspace/favtuts/test2/test3/test4/";
        createDirectoriesNIO(dir);

    }

    public static void createDirectoriesNIO(String dir) {

        try {

            Path path = Paths.get(dir);
            Files.createDirectories(path);
            System.out.println("Directory is created!");

            //Files.createDirectory(path);

        } catch (IOException e) {
            System.err.println("Failed to create directory!" + e.getMessage());
        }

    }
    
}

2. Create Directory – Legacy IO

For legacy IO java.io.File, the similar methods are file.mkdir() to create a directory, and file.mkdirs() to create a directory including all nonexistent parent directories.

Both file.mkdir() and file.mkdirs() returns a boolean, true if success to create the directory, fail otherwise, no exception thrown.

DirectoryCreate2.java

package com.favtuts.io.directory;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class DirectoryCreate {

    public static void main(String[] args) {

        String dir = "/home/tvt/workspace/favtuts/test2/test3/test4/";        
        createDirectoriesLegacy(dir);

    }

    public static void createDirectoriesLegacy(String dir) {

        File file = new File(dir);
        
        // true if the directory was created, false otherwise
        if (file.mkdirs()) {
            System.out.println("Directory is created!");
        } else {
            System.out.println("Failed to create directory!");
        }

    }
    
}

In legacy IO, the lack of exception thrown in creating directory makes developers very hard to debug or understand why we cannot create a directory, and this is one of the reasons Java releases a new java.nio.Files to throw a proper exception.

Download Source Code

$ git clone https://github.com/favtuts/java-core-tutorials-examples

$ cd java-io/directory

References

Leave a Reply

Your email address will not be published. Required fields are marked *