일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- json
- 이탈리아
- windows
- Array
- javascript
- Button
- 이클립스
- 테이블
- IntelliJ
- CMD
- Eclipse
- Files
- table
- html
- Maven
- js
- CSS
- 인텔리제이
- vscode
- list
- string
- 배열
- 자바스크립트
- Java
- Visual Studio Code
- date
- input
- 문자열
- ArrayList
- 자바
- Today
- Total
어제 오늘 내일
[Java] 디렉토리 생성하기 본문
Java API를 이용하여, 파일 및 디렉토리를 다루는 방법을 알아보고 있습니다.
[Java] 텍스트 파일 읽기 ( FileReader, BufferedReader, Scanner, Files )
[Java] 파일 생성하는 3가지 방법 (File, FileOutputStream, Files)
이번에는, 디렉토리를 생성하는 방법을 소개합니다.
- java.nio.file.Files
- createDirectory()
- createDirectories()
- java.io.File
- mkdir()
- mkdirs()
1. java.nio.file.Files
(java.nio.file.Files 클래스는 java 7 이후부터 사용 가능합니다.)
createDirectory()
public static Path createDirectory(Path dir, FileAttribute<?>... attrs) throws IOException
java.nio.file.Files 클래스의 createDirectory() 메소드를 이용해서, 디렉토리를 생성할 수 있습니다.
2번째 파라미터인 attrs는 옵션입니다.
- 디렉토리가 존재하면, FileAlreadyExistsException 이 발생합니다.
- 중첩된 디렉토리를 생성할 때, 부모 디렉토리가 존재하지 않으면, NoSuchFileException 이 발생합니다.
코드
import java.io.IOException;
import java.nio.file.FileAlreadyExistsException;
import java.nio.file.Files;
import java.nio.file.NoSuchFileException;
import java.nio.file.Path;
import java.nio.file.Paths;
public class CreateDirectory {
public static void main(String[] args) {
Path directoryPath = Paths.get("d:\\example\\new_directory");
try {
// 디렉토리 생성
Files.createDirectory(directoryPath);
System.out.println(directoryPath + " 디렉토리가 생성되었습니다.");
} catch (FileAlreadyExistsException e) {
System.out.println("디렉토리가 이미 존재합니다");
} catch (NoSuchFileException e) {
System.out.println("디렉토리 경로가 존재하지 않습니다");
}catch (IOException e) {
e.printStackTrace();
}
}
}
FileAlreadyExistsException
'D:\example\new_directory'가 이미 존재하는 경우 발생합니다.
NoSuchFileException
부모 디렉토리인 'D:\example' 디렉토리가 존재하지 않는 경우 발생합니다.
createDirectories()
public static Path createDirectories(Path dir, FileAttribute<?>... attrs) throws IOException
- 디렉토리가 존재하더라도, exception을 발생시키지 않습니다.
- 중첩된 디렉토리를 생성할 때, 부모 디렉토리가 존재하지 않으면,
자동으로 부모 디렉토리를 만들어 줍니다.
Exception은 발생하지 않습니다.
코드
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class CreateDirectory {
public static void main(String[] args) {
Path directoryPath = Paths.get("d:\\example\\new_directory");
try {
// 디렉토리 생성
Files.createDirectories(directoryPath);
System.out.println(directoryPath + " 디렉토리가 생성되었습니다.");
}catch (IOException e) {
e.printStackTrace();
}
}
}
'D:\example\new_directory' 디렉토리가 이미 존재하는 경우,
새로운 디렉토리를 만들지 않고, exception도 발생시키지 않습니다.
'D:\example\new_directory'의 상위 디렉토리인 'D:\example'가 존재하지 않는 경우,
자동으로 'D:\example'를 생성해 줍니다.
2. java.io.File
mkdir()
public boolean mkdir()
java.io.File 클래스의 mkdir()을 사용하면, 디렉토리를 생성할 수 있습니다.
- 디렉토리가 존재하면, 디렉토리를 생성하지 않고, false를 리턴합니다.
(Exception은 발생하지 않습니다.) - 중첩된 디렉토리를 생성할 때, 부모 디렉토리가 존재하지 않으면, false를 리턴합니다.
(Exception은 발생하지 않습니다.)
코드
import java.io.File;
public class CreateDirectory {
public static void main(String[] args) {
File file = new File("d:\\example\\new_directory");
// 디렉토리 생성
boolean directoryCreated = file.mkdir();
// 결과 출력
System.err.println(directoryCreated);
}
}
'D:\example\new_directory' 디렉토리가 이미 존재하는 경우,
새로운 디렉토리를 만들지 않고, false를 리턴합니다.
'D:\example\new_directory'의 상위 디렉토리인 'D:\example'가 존재하지 않는 경우,
새로운 디렉토리를 만들지 않고, false를 리턴합니다.
mkdirs()
public boolean mkdirs()
mkdirs() 메소드를 사용하여 디렉토리를 생성하면,
중첩된 디렉토리를 생성할 때, 부모 디렉토리가 없으면, 자동으로 부모 디렉토리를 생성해 줍니다.
- 디렉토리가 존재하면, 디렉토리를 생성하지 않고, false를 리턴합니다.
(Exception은 발생하지 않습니다.) - 중첩된 디렉토리를 생성할 때, 부모 디렉토리가 존재하지 않으면, 부모 디렉토리를 생성하고, true를 리턴합니다.
(Exception은 발생하지 않습니다.)
코드
import java.io.File;
public class CreateDirectory {
public static void main(String[] args) {
File file = new File("d:\\example\\new_directory");
// 디렉토리 생성
boolean directoryCreated = file.mkdirs();
// 결과 출력
System.err.println(directoryCreated);
}
}
'D:\example\new_directory' 디렉토리가 이미 존재하는 경우,
새로운 디렉토리를 만들지 않고, false를 리턴합니다.
'D:\example\new_directory'의 상위 디렉토리인 'D:\example'가 존재하지 않는 경우,
자동으로 'D:\example'를 생성하고, true를 리턴합니다.
Java API 중,
java.nio.file.Files 클래스와 java.io.File 클래스를 이용하여 디렉토리를 만드는 방법을 알아보았습니다.
두 클래스 모두 디렉토리를 생성할 수 있는, 비슷한 메소드를 제공합니다.
두 클래스의 가장 큰 차이는 적절한 Exception을 발생시키느냐, 발생시키지 않느냐입니다.
java.nio.file.Files 클래스가
정상적으로 디렉토리를 생성하지 못하는 경우,
그 원인에 맞는 Exception을 적절히 발생시키기 때문에,
두 개 클래스를 모두 사용할 수 있는 상황이라면,
java.nio.file.File 클래스를 사용하는 것이 더 낫다고 생각합니다.
'IT > Java' 카테고리의 다른 글
[Java] 파일의 최종 수정일자 조회 (0) | 2021.06.05 |
---|---|
[Java] 파일 또는 디렉토리 생성일자 구하기 (0) | 2021.05.31 |
[Java] 파일 사이즈 구하는 3가지 방법 (0) | 2021.05.30 |
[Java] 현재 디렉토리 가져오기 (0) | 2021.05.30 |
[Java] 파일, 디렉토리 삭제하기 (0) | 2021.05.29 |