EEALL@ONCE

☕`java.nio.file.Files` 클래스 본문

언어💻/자바☕

☕`java.nio.file.Files` 클래스

올엣원스 2023. 8. 7. 15:14
728x90

`java.nio.file.Files` 클래스는 Java에서 파일과 디렉토리를 다루는 데 사용되는 유틸리티 클래스입니다. Java 7부터 소개된 NIO(Non-blocking I/O) API에 속하는 클래스 중 하나로, 이를 사용하여 파일을 읽고 쓰는 등 다양한 파일 관련 작업을 수행할 수 있습니다.

`java.nio.file.Files` 클래스는 다양한 메서드를 제공하며, 일반적으로 파일을 읽거나 쓰는 데에 많이 활용됩니다. 주요 메서드에는 다음과 같은 것들이 있습니다:

1. `readAllLines(Path path, Charset cs)`: 지정된 파일에서 모든 라인을 읽어 리스트로 반환합니다. 파일 인코딩을 지정하여 특정 문자셋으로 읽을 수 있습니다.

2. `readAllBytes(Path path)`: 지정된 파일의 모든 바이트를 읽어 바이트 배열로 반환합니다.

3. `newBufferedWriter(Path path, Charset cs, OpenOption... options)`: 지정된 파일에 쓰기 위한 버퍼드 라이터를 생성합니다. 파일 인코딩과 옵션들을 설정할 수 있습니다.

4. `write(Path path, byte[] bytes, OpenOption... options)`: 바이트 배열을 지정된 파일에 씁니다. 옵션들을 설정할 수 있습니다.

5. `write(Path path, Iterable<? extends CharSequence> lines, Charset cs, OpenOption... options)`: 문자열 리스트를 지정된 파일에 씁니다. 옵션과 문자셋을 설정할 수 있습니다.

등등 다양한 파일 처리 메서드를 제공하며, NIO API의 특성상 비동기 파일 I/O 작업도 가능합니다. `java.nio.file.Files` 클래스를 사용하면 파일 처리가 더 효율적이고 편리해집니다.

import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;

public class FileReadingExampleWithNIO {
    public static void main(String[] args) {
        // 디렉토리 경로와 파일 이름을 따로 불러옵니다.
        String folderPath = "C:/example_folder";
        String fileName = "example.txt";

        // Paths 클래스를 사용하여 경로를 합칩니다.
        Path filePath = Paths.get(folderPath, fileName);

        // 파일을 읽어서 내용을 출력합니다.
        try {
            List<String> lines = Files.readAllLines(filePath, Charset.forName("UTF-8"));
            for (String line : lines) {
                System.out.println(line);
            }
        } catch (IOException e) {
            System.err.println("파일을 읽을 수 없습니다: " + e.getMessage());
        }
    }
}
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class FileWritingExampleWithNIO {
    public static void main(String[] args) {
        // 디렉토리 경로와 파일 이름을 따로 불러옵니다.
        String folderPath = "C:/example_folder";
        String fileName = "example.txt";

        // Paths 클래스를 사용하여 경로를 합칩니다.
        Path filePath = Paths.get(folderPath, fileName);

        // 파일에 쓸 내용을 준비합니다.
        String content = "Hello, NIO API!\nThis is a sample content.";

        // 파일에 내용을 씁니다.
        try {
            Files.write(filePath, content.getBytes(Charset.forName("UTF-8")));
            System.out.println("파일에 내용이 성공적으로 쓰여졌습니다.");
        } catch (IOException e) {
            System.err.println("파일에 내용을 쓸 수 없습니다: " + e.getMessage());
        }
    }
}

 

 

java 7 버전보다 아래라면, 

대체 방법은 아래에 있다 : 

https://at-once-moment.tistory.com/66

 

☕ `FileInputStream`, `InputStreamReader`, `BufferedReader`

위 코드에서 `FileInputStream`, `InputStreamReader`, `BufferedReader`는 파일을 읽기 위해 서로 다른 역할을 수행합니다. 각각의 역할은 다음과 같습니다: 1. `FileInputStream`: - 이 클래스는 파일로부터 바이트 단

at-once-moment.tistory.com

 

728x90