PHpullh
학습 라이브러리/Java/NIO.2 Path와 Files

JAVA · 파일/IO

NIO.2 Path와 Files

java.nio.file API로 파일과 디렉토리를 현대적으로 다룹니다.

파일/IO중급NIO.2PathFiles파일

핵심 설명

java.nio.file API로 파일과 디렉토리를 현대적으로 다룹니다.

Java code

import java.nio.file.*;
import java.io.IOException;
import java.util.List;

public class NioPathFiles {
    public static void main(String[] args) throws IOException {
        // Path 생성
        Path path = Path.of("src", "main", "java");
        Path home = Path.of(System.getProperty("user.home"));

        // Path 조작
        System.out.println(path.getFileName());    // java
        System.out.println(path.getParent());      // src/main
        System.out.println(path.toAbsolutePath());
        System.out.println(path.resolve("App.java")); // src/main/java/App.java
        System.out.println(path.normalize());

        // Files 유틸리티
        Path tempFile = Files.createTempFile("test", ".txt");
        Files.writeString(tempFile, "Hello NIO.2!");
        String content = Files.readString(tempFile);
        System.out.println(content);

        // 한 줄씩 읽기
        List<String> lines = Files.readAllLines(tempFile);

        // 파일 정보
        System.out.println("크기: " + Files.size(tempFile));
        System.out.println("존재: " + Files.exists(tempFile));
        System.out.println("읽기가능: " + Files.isReadable(tempFile));

        // 디렉토리 순회
        // try (var stream = Files.walk(Path.of("."))) {
        //     stream.filter(Files::isRegularFile)
        //           .forEach(System.out::println);
        // }

        Files.deleteIfExists(tempFile);
    }
}

학습 팁

Files.readString()Files.writeString()(Java 11+)은 작은 파일에 가장 간편합니다. 대용량은 BufferedReader를 사용하세요.

주의할 점

Files.walk()는 스트림을 반환하므로 반드시 try-with-resources로 닫아야 합니다. 안 닫으면 파일 핸들 누수가 발생합니다.

자주 묻는 질문

NIO.2 Path와 Files란 무엇인가요?

java.nio.file API로 파일과 디렉토리를 현대적으로 다룹니다.

NIO.2 Path와 Files 학습 시 주의할 점은 무엇인가요?

Files.walk() 는 스트림을 반환하므로 반드시 try-with-resources 로 닫아야 합니다. 안 닫으면 파일 핸들 누수가 발생합니다.