산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> java

Java InputStreamReader 완전 해설: 메서드, 인코딩, 실전 예제

Java InputStreamReader 해설

Java의 InputStreamReader가 바이트 스트림을 문자 스트림으로 연결하는 방식, 핵심 메서드, 인코딩 올바른 처리 방법을 알아봅니다.

java.io의 InputStreamReader 클래스는 원시 바이트를 문자로 변환하여 텍스트 파일, 네트워크 스트림, 문자를 나타내는 바이트 기반 소스를 읽는 데 필수적입니다.

추상 Reader 클래스를 확장하며 바이트 스트림(예: FileInputStream)과 문자 스트림 사이의 다리 역할을 합니다.

문자가 여러 바이트를 필요로 할 때(UTF-8, UTF-16 인코딩 텍스트 등) InputStreamReader는 해당 바이트들을 함께 읽어 올바른 문자를 생성합니다.


InputStreamReader 생성하기

필요한 클래스를 임포트하는 것으로 시작합니다:

import java.io.InputStreamReader;

일반적인 인스턴스화는 FileInputStream을 기본 바이트 소스로 사용합니다:

FileInputStream file = new FileInputStream("example.txt");
InputStreamReader reader = new InputStreamReader(file);

파일의 인코딩을 안다면 잘못된 해석을 피하기 위해 지정하세요:

InputStreamReader reader = new InputStreamReader(file, Charset.forName("UTF-8"));

Charset을 사용하면 리더가 의도된 캐릭터셋으로 바이트를 해석함을 보장합니다.


InputStreamReader의 핵심 메서드

read()

예제: 텍스트 파일을 문자 배열로 읽기.

import java.io.*;

class Main {
    public static void main(String[] args) {
        char[] buffer = new char[100];
        try (FileInputStream file = new FileInputStream("input.txt");
             InputStreamReader reader = new InputStreamReader(file)) {
            reader.read(buffer);
            System.out.println("Data in the stream:\n" + new String(buffer));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

실행 결과

Data in the stream:
This is a line of text inside the file.

getEncoding()

리더가 사용하는 인코딩을 조회합니다:

InputStreamReader defaultReader = new InputStreamReader(file);
InputStreamReader utf8Reader = new InputStreamReader(file, Charset.forName("UTF-8"));
System.out.println("Default encoding: " + defaultReader.getEncoding());
System.out.println("UTF-8 encoding: " + utf8Reader.getEncoding());

실행 결과

Default encoding: Cp1252
UTF-8 encoding: UTF-8

인코딩이 지정되지 않으면 getEncoding()은 플랫폼의 기본 캐릭터셋을 반환합니다.

참고: 명시적 인코딩을 위해 Charset.forName()을 사용하세요. 더 자세한 내용은 Java Charset 문서를 참조하세요.


close()

사용 후 리더를 항상 닫으세요. 위 try-with-resources 구문이 자동으로 처리하지만, reader.close()를 명시적으로 호출할 수도 있습니다.


기타 유용한 메서드

메서드설명
ready()스트림이 읽기 준비되었는지 확인합니다.
mark(int readAheadLimit)나중 재설정을 위해 현재 위치를 표시합니다.
reset()마지막 표시 위치로 돌아갑니다.

종합적인 레퍼런스는 공식 InputStreamReader 페이지를 참조하세요.

java

  1. Java final 키워드 마스터: 변수, 메서드, 클래스에서의 활용
  2. Java instanceof 연산자 완벽 가이드: 기본 사용법부터 상속, 인터페이스까지
  3. Java 정적 중첩 클래스 이해: 용법, 내부 클래스와의 차이, 예제
  4. Java 익명 내부 클래스 마스터: 정의, 문법, 실전 예제
  5. Java 싱글톤 패턴 완벽 가이드: 안전하게 구현하고 사용하기
  6. Java 리플렉션 마스터: 런타임에 클래스, 메서드, 필드 검사 및 조작
  7. Java ObjectOutputStream 마스터하기: 직렬화, 메서드, 실전 예제
  8. Java Scanner 완전 정복: 종합 가이드와 실전 예제
  9. Java 제네릭 마스터하기: 재사용 가능하고 타입 안전한 코드 작성
  10. java.io로 Java 파일 작업 마스터하기 – 생성, 읽기, 쓰기 및 삭제