Making sure a directory with given path exists in Java
How can i make sure a directory exists in file system with the given path? For example if i provide a string like following
/a/b/c/d
How to write a Java program which creates these directories in case they does not exist ?
1 Answer
7 years ago by Divya
You can use the following utility function which accepts a path and make sure that path exists in file system
public static void ensureDirectory(String dirPath) {
if (dirPath != null && !dirPath.isEmpty()) {
File dir = new File(dirPath);
if (!dir.exists()) {
Path newDirPath = Paths.get(dirPath);
if (!Files.exists(newDirPath)) {
try {
Files.createDirectories(newDirPath);
} catch (IOException e) {
throw new RuntimeException("Exception while creating directory: " + dirPath, e);
}
}
}
}
}
Following is a sample program which tests the above function
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 Test {
public static void main(String[] args) {
ensureDirectory("/foo/bar"); // Make sure you have proper access to the give path
}
public static void ensureDirectory(String dirPath) {
if (dirPath != null && !dirPath.isEmpty()) {
File dir = new File(dirPath);
if (!dir.exists()) {
Path newDirPath = Paths.get(dirPath);
if (!Files.exists(newDirPath)) {
try {
Files.createDirectories(newDirPath);
} catch (IOException e) {
throw new RuntimeException("Exception while creating directory: " + dirPath, e);
}
}
}
}
}
}
If you have proper permissions to the given path, the utility method will create the directory structure for you of not exists. If you do not have proper permissions, you may get following exception
Exception in thread "main" java.lang.RuntimeException: Exception while creating directory: /foo/bar
at com.Test.ensureDirectory(Test.java:24)
at com.Test.main(Test.java:12)
Caused by: java.nio.file.AccessDeniedException: /foo
at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
at sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:384)
at java.nio.file.Files.createDirectory(Files.java:674)
at java.nio.file.Files.createAndCheckIsDirectory(Files.java:781)
at java.nio.file.Files.createDirectories(Files.java:767)
at com.Test.ensureDirectory(Test.java:22)
... 1 more
7 years ago by Karthik Divi