JAVA/포스팅

자바 InputStreamReader

짜집퍼박사(짜박) 2023. 11. 26. 15:44

InputStreamReader는 바이트 입력 스트림을 문자 입력 스트림으로 변환하는 보조 스트림입니다. 주로 바이트 기반 스트림에서 문자 데이터를 읽을 때 사용됩니다. InputStreamReader는 Reader 클래스를 상속하고 있습니다.

InputStreamReader의 생성자 중에서 자주 사용되는 것은 다음과 같습니다.

 

1. InputStreamReader(InputStream in) 생성자

주어진 바이트 입력 스트림 in을 기반으로 InputStreamReader를 생성합니다.

 

2. InputStreamReader(InputStream in, Charset cs) 생성자

주어진 바이트 입력 스트림 in을 기반으로 하며, 주어진 문자 집합 cs를 사용하여 InputStreamReader를 생성합니다.

 

3. InputStreamReader(InputStream in, CharsetDecoder dec) 생성자

주어진 바이트 입력 스트림 in을 기반으로 하며, 주어진 문자 집합 디코더 dec를 사용하여 InputStreamReader를 생성합니다. InputStreamReader의 주요 메서드와 사용 예제는 다음과 같습니다.

 

- int read() 메서드 : 입력 스트림에서 한 문자를 읽어 반환합니다. 끝에 도달하면 -1을 반환합니다.

- int read(char[] cbuf, int offset, int length) 메서드 : 입력 스트림에서 최대 length만큼의 문자를 읽어 주어진 문자 배열의 지정된 오프셋부터 저장합니다. 실제로 읽은 문자의 수를 반환합니다.

- void close() 메서드 : 스트림을 닫습니다.

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;

public class InputStreamReaderExample {
    public static void main(String[] args) {
        try (FileInputStream fis = new FileInputStream("input.txt");
             InputStreamReader isr = new InputStreamReader(fis, StandardCharsets.UTF_8)) {
            // 한 문자씩 읽어와 출력
            int data;
            while ((data = isr.read()) != -1) {
                System.out.print((char) data);
            }

            // 문자 배열로 읽어와 출력
            char[] charArray = new char[10];
            isr.read(charArray, 0, 5);
            System.out.println("\nRead characters from charArray: " + new String(charArray, 0, 5));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

이 예제에서는 InputStreamReader를 사용하여 파일에서 문자를 읽고 출력하고 있습니다. 주어진 문자 집합 StandardCharsets.UTF_8를 사용하여 InputStreamReader를 생성했습니다. try-with-resources 구문을 사용하여 자동으로 리소스를 닫고 있습니다.

 

With ChatGPT

'JAVA > 포스팅' 카테고리의 다른 글

자바 표준입출력  (0) 2023.11.26
자바 OutputStreamWriter  (0) 2023.11.26
자바 BufferedWriter  (0) 2023.11.26
자바 BufferedReader  (0) 2023.11.26
자바 StringWriter  (0) 2023.11.26