# How to create a directory in Java

By Atta Ur Rehman Shah (https://attacomsian.com/about). Published Dec 13, 2019. Topics: Java.
Canonical URL: https://attacomsian.com/blog/java-create-directory

> A short tutorial to learn how to create a single directory as well as nested directories structure in Java.

In an earlier article, we looked at how to [create a new file](https://attacomsian.com/blog/java-create-file) in Java. In this quick article, you will learn **how to create a directory** in Java. 

## Using Java NIO API

In Java 7 and higher, you can use [Java NIO API](https://attacomsian.com/blog/java-read-write-files-nio-api) `Files.createDirectory()` static method to create a new directory:

```java
try {
    // directory path
    Path path = Paths.get("./java");

    // create directory
    Files.createDirectory(path);

}catch (IOException ex) {
    ex.printStackTrace();
}
```

The above code will create a new directory named `java` in the class path. If it already exists, a `FileAlreadyExistsException` exception is thrown. 

To **avoid the exception**, you can use the `Files.createDirectories()` method instead. It doesn't throw an exception if the directory already exists. Here is an example:

```java
try {
    // directory path
    Path path = Paths.get("./java");

    // create directory
    Files.createDirectories(path);

}catch (IOException ex) {
    ex.printStackTrace();
}
```

You can even use `Files.createDirectories()` to **create multiple nested directories at once**. This method creates all nonexistent parent directories first. Here is  an example:

```java
try {
    // directory path
    Path path = Paths.get("./java/jvm/1.8");

    // create directory
    Files.createDirectories(path);

}catch (IOException ex) {
    ex.printStackTrace();
}
```

## Using Java I/O Package

You can also use the classic Java I/O package (classes in `java.io.*`) to create a new directory. The following example shows how you can use the `File.mkdir()` method to create a single directory:

```java
// directory path
File file = new File("./java");

// create directory
if (file.mkdir()) {
    System.out.println("Directory is created.");
} else {
    System.out.println("Directory already exists.");
}
```

To **create a hierarchy of directory structure**, you can use the `File.mkdirs()` method:

```java
// directories path
File file = new File("./java/jvm/1.8");

// create directories
if (file.mkdirs()) {
    System.out.println("Directories are created.");
} else {
    System.out.println("Directories already exist.");
}
```

## Further Reading

You may be interested in other Java I/O articles:

* [Reading and Writing Files in Java](https://attacomsian.com/blog/java-read-write-files)
* [How to Read and Write Text Files in Java](https://attacomsian.com/blog/java-read-write-text-files)
* [How to Read and Write Binary Files in Java](https://attacomsian.com/blog/java-read-write-binary-files)
* [Reading and Writing Files using Java NIO API](https://attacomsian.com/blog/java-read-write-files-nio-api)
* [How to read a file line by line in Java](https://attacomsian.com/blog/how-to-read-a-file-line-by-line-in-java)
