Java class 정리 - Bufferreader
BufferedReader는 Java의 java.io 패키지에 속하는 클래스로, 문자 입력 스트림에서 텍스트를 읽어 들이기 위해 사용됩니다. 이 클래스는 효율적으로 데이터를 읽기 위한 버퍼를 사용하며, 일반적으로 파일이나 콘솔 입력 같은 입력 소스로부터 텍스트 데이터를 읽을 때 사용됨. BufferedReader를 사용하면 데이터를 버퍼링함으로써 입출력(I/O) 효율을 높일 수 있다.
주요 생성자와 메소드
- 생성자:
- BufferedReader(Reader in): 주어진 Reader를 사용하여 BufferedReader를 생성합니다. 기본 버퍼 크기를 사용합니다.
- BufferedReader(Reader in, int sz): 주어진 Reader를 사용하고, 버퍼 크기를 sz로 설정하여 BufferedReader를 생성합니다.
- 메소드:
- int read(): 단일 문자를 읽고 해당 문자를 나타내는 정수를 반환합니다. 스트림의 끝에 도달하면 -1을 반환합니다.
- int read(char[] cbuf, int off, int len): 문자 배열에 문자를 읽어 들입니다. off는 배열에서 데이터를 저장하기 시작할 시작 인덱스이고, len은 읽을 최대 문자 수입니다.
- String readLine(): 한 줄의 텍스트를 읽고 반환합니다. 줄의 끝은 개행('\n')이나 복귀('\r') 또는 복귀 다음 바로 오는 개행에 의해 인식됩니다. 스트림의 끝에 도달하면 null을 반환합니다.
- void close(): 스트림을 닫고 관련된 모든 시스템 자원을 해제합니다.
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class BufferedReaderExample {
public static void main(String[] args) {
try (BufferedReader br = new BufferedReader(new FileReader("example.txt"))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
이 예시에서는 BufferedReader를 사용하여 파일 "example.txt"에서 텍스트 라인을 순차적으로 읽고 콘솔에 출력합니다. readLine() 메소드는 파일의 각 줄을 읽어들이고, 파일의 끝에 도달하면 null을 반환하여 루프가 종료됩니다. try-with-resources 구문을 사용하여 파일을 자동으로 닫습니다, 이는 close() 메소드 호출을 자동화하여 자원 누수를 방지합니다.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
이 코드는 Java에서 표준 입력 스트림 (System.in)으로부터 텍스트 데이터를 효율적으로 읽기 위해 BufferedReader를 사용하는 방법을 보여줍니다. 여기에 사용된 각 클래스와 메서드는 java.io 패키지에 속해 있습니다. 이 예시에서는 사용자의 입력을 받아 처리하기 위한 일반적인 방법을 구현하고 있습니다.
- System.in: Java에서는 System.in을 통해 표준 입력 스트림(보통은 키보드 입력)에 접근합니다. System.in은 기본적으로 InputStream 타입이기 때문에, 바이트 기반 스트림입니다.
- InputStreamReader: 바이트 스트림을 문자 스트림으로 변환하는 데 사용됩니다. InputStreamReader는 바이트를 읽고 지정된 문자 인코딩이나 플랫폼의 기본 인코딩을 사용하여 문자로 변환합니다. System.in으로부터 읽은 바이트 데이터를 문자 데이터로 변환하기 위해 InputStreamReader가 사용됩니다.
- BufferedReader: 문자 입력 스트림으로부터 텍스트를 읽어 들이는 데 사용되며, 효율적인 읽기를 위해 내부적으로 버퍼링을 사용합니다. BufferedReader를 사용하면 readLine() 메소드를 통해 한 번에 한 줄씩 텍스트를 읽을 수 있습니다. 이는 사용자 입력을 처리할 때 매우 유용합니다.
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine(); // 사용자로부터 한 줄 입력을 받음
System.out.println("You entered: " + input);
} catch (IOException e) {
e.printStackTrace();
}
이 코드는 BufferedReader를 사용하여 사용자로부터 한 줄의 입력을 받고, 그 입력을 콘솔에 출력하는 간단한 예제입니다. 사용자가 입력을 완료하고 엔터 키를 누르면, readLine() 메소드는 사용자가 입력한 줄을 문자열로 반환합니다.