Java의 java.io 패키지에 포함된 File 클래스는 시스템상의 파일이나 디렉터리(경로 이름)를 나타내는 클래스입니다. 이 클래스는 파일 및 디렉터리에 대한 다양한 작업을 수행할 수 있는 여러 메서드를 제공합니다.
그중 mkdir() 메서드는 현재 객체가 나타내는 경로에 디렉터리를 생성하는 역할을 합니다.
디렉터리 계층 구조 생성하기
새로운 디렉터리 계층 구조를 한 번에 생성하려면 같은 클래스의 mkdirs() 메서드를 사용하면 됩니다. 이 메서드는 현재 객체가 가리키는 경로에 디렉터리를 생성할 뿐만 아니라, 존재하지 않는 상위(부모) 디렉터리까지 모두 자동으로 만들어 줍니다.
예를 들어 D:\test\myDirectories\sample_directory처럼 여러 단계의 경로가 지정되어 있고 중간 디렉터리가 없더라도, mkdirs()를 호출하면 필요한 모든 상위 디렉터리와 최종 디렉터리가 함께 생성됩니다.
예제 코드
import java.io.File;
import java.util.Scanner;
public class CreateDirectory {
public static void main(String args[]) {
System.out.println("디렉터리를 생성할 경로를 입력하세요: ");
Scanner sc = new Scanner(System.in);
String path = sc.next();
System.out.println("생성할 디렉터리의 이름을 입력하세요: ");
path = path + sc.next();
// File 객체 생성
File file = new File(path);
// 디렉터리 생성
boolean bool = file.mkdirs();
if(bool) {
System.out.println("디렉터리가 성공적으로 생성되었습니다");
} else {
System.out.println("지정한 디렉터리를 생성하지 못했습니다");
}
}
}실행 결과
디렉터리를 생성할 경로를 입력하세요: D:\test\myDirectories\ 생성할 디렉터리의 이름을 입력하세요: sample_directory 디렉터리가 성공적으로 생성되었습니다
프로그램 실행 후 파일 탐색기나 터미널에서 해당 경로를 확인해 보면, 아래 그림과 같이 입력한 경로 전체에 걸쳐 디렉터리 계층 구조가 정상적으로 생성된 것을 확인할 수 있습니다.

mkdir()과 mkdirs()의 차이점
두 메서드의 핵심적인 차이는 다음과 같습니다.
- mkdir(): 마지막 디렉터리 하나만 생성하며, 상위 디렉터리가 존재하지 않으면 실패하고
false를 반환합니다. - mkdirs(): 존재하지 않는 모든 상위 디렉터리를 포함하여 전체 경로의 디렉터리 계층을 생성합니다.
따라서 중간 경로가 이미 존재한다는 것이 보장된 경우에는 mkdir()을, 불확실한 경우에는 mkdirs()를 사용하는 것이 안전합니다.