EEALL@ONCE
☕ `FileInputStream`, `InputStreamReader`, `BufferedReader` 본문
위 코드에서 `FileInputStream`, `InputStreamReader`, `BufferedReader`는 파일을 읽기 위해 서로 다른 역할을 수행합니다. 각각의 역할은 다음과 같습니다:
1. `FileInputStream`:
- 이 클래스는 파일로부터 바이트 단위로 데이터를 읽어옵니다. 즉, 파일을 바이트 스트림으로 열어서 데이터를 읽는 역할을 합니다.
- 파일의 내용을 바이트 단위로 직접 읽기 때문에 상대적으로 더 낮은 수준의 I/O 클래스입니다.
2. `InputStreamReader`:
- 이 클래스는 바이트 스트림을 문자 스트림으로 변환해주는 역할을 합니다.
- `FileInputStream`으로 읽은 바이트를 문자로 변환하는 데 사용됩니다. 예를 들어, UTF-8 인코딩으로 변환하면 파일 내용을 문자열로 읽을 수 있습니다.
- 중간 단계로서, 문자로 변환된 스트림을 `BufferedReader`로 감싸서 라인 단위로 텍스트를 읽을 수 있도록 준비합니다.
3. `BufferedReader`:
- 이 클래스는 문자로 변환된 스트림에서 라인 단위로 텍스트를 읽어옵니다.
- `readLine()` 메서드를 사용하여 파일에서 한 줄씩 텍스트를 읽을 수 있습니다. 텍스트가 더 이상 없으면 `null`을 반환합니다.
- 버퍼링 기능을 제공하여 읽기 속도를 향상시키고, 텍스트를 한 줄씩 읽을 수 있도록 도와줍니다.
이렇게 순차적으로 연결하여 파일을 읽으면, `BufferedReader`를 통해 텍스트를 라인 단위로 읽을 수 있으며, 파일의 인코딩 문제 등도 `InputStreamReader`를 통해 처리할 수 있습니다. 각 클래스의 역할에 따라 파일 읽기를 효율적으로 처리할 수 있습니다.
'언어💻 > 자바☕' 카테고리의 다른 글
☕ foreach (0) | 2023.08.09 |
---|---|
☕`java.nio.file.Files` 클래스 (0) | 2023.08.07 |
☕ 자바 자료형 - var 연산자 (0) | 2023.08.04 |
☕ 자바 자료형 - 원시 자료형 primitive type vs 참조 자료형 reference type (0) | 2023.08.03 |
☕ 자바 자료형 - 배열은 개수의 변경이 불가능함 (0) | 2023.08.03 |