✅ BufferedReader의 모든 요소 (메서드 및 기능)
BufferedReader는 입력을 효율적으로 처리하는 Java 클래스로, 버퍼를 사용하여 빠르게 문자열을 읽을 수 있는 기능을 제공합니다.
✅ 1. BufferedReader 생성자
BufferedReader는 다음과 같은 생성자를 제공합니다.
public BufferedReader(Reader in) // 기본 생성자 (Reader 객체 필요)
public BufferedReader(Reader in, int bufferSize) // 버퍼 크기 지정 가능
📌 Reader 객체 (InputStreamReader, FileReader 등)를 전달해야 함
📌 기본 버퍼 크기는 8192 bytes (8KB)
📌 예제
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = br.readLine();
System.out.println("입력된 값: " + line);
br.close();
}
}
✅ 2. 주요 메서드
✅ 1) readLine() → 한 줄씩 읽기 (String 반환)
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = br.readLine();
System.out.println(line);
📌 한 줄을 읽고 개행 문자(엔터)는 포함되지 않음
📌 입력이 없으면 null 반환
✅ 2) read() → 한 문자씩 읽기 (int 반환)
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int charValue = br.read(); // 한 문자 입력
System.out.println((char) charValue);
📌 아스키 코드값을 반환하므로 (char) 캐스팅 필요
📌 입력이 없으면 -1 반환
✅ 3) read(char[] buffer, int off, int len) → 문자 배열에 읽기
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
char[] buffer = new char[10];
int numCharsRead = br.read(buffer, 0, 5); // 최대 5개 문자 읽기
System.out.println(new String(buffer, 0, numCharsRead));
📌 off는 배열 시작 인덱스, len은 읽을 문자 수
📌 파일이나 긴 문자열을 한 번에 읽을 때 유용
✅ 4) skip(long n) → n개의 문자 건너뛰기
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
br.skip(5); // 처음 5글자 건너뜀
📌 읽기 포인터를 n만큼 이동
📌 파일 읽기 시 특정 부분을 건너뛸 때 사용
✅ 5) ready() → 입력이 준비되었는지 확인 (boolean 반환)
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
if (br.ready()) {
System.out.println(br.readLine());
}
📌 입력이 존재하면 true, 없으면 false
📌 System.in에서는 항상 false 반환될 수도 있음 (버퍼링 방식 차이 때문)
✅ 6) mark(int readAheadLimit) → 현재 위치 저장
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
br.mark(100); // 최대 100문자까지 되돌리기 가능
📌 reset()과 함께 사용하여 특정 위치로 되돌릴 수 있음
📌 readAheadLimit을 초과하면 mark가 무효화됨
✅ 7) reset() → mark() 위치로 되돌리기
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
br.mark(10); // 10문자까지만 저장 가능
System.out.println((char) br.read()); // 1문자 읽기
br.reset(); // 되돌리기
System.out.println((char) br.read()); // 다시 처음부터 읽기
📌 mark() 한 위치로 되돌릴 수 있음
✅ 8) close() → 스트림 닫기
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
br.close();
📌 파일 또는 네트워크 스트림 사용 시 close() 필수
✅ 3. BufferedReader + FileReader (파일 입력)
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("test.txt"));
String line;
while ((line = br.readLine()) != null) { // 한 줄씩 읽기
System.out.println(line);
}
br.close();
}
}
📌 파일을 읽을 때 FileReader와 함께 사용
📌 null이 반환될 때까지 읽으면 파일 끝(EOF)
✅ 4. BufferedReader + InputStreamReader (콘솔 입력)
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("이름을 입력하세요: ");
String name = br.readLine();
System.out.println("입력된 이름: " + name);
br.close();
}
}
📌 System.in은 바이트 기반이므로 InputStreamReader와 함께 사용해야 함
📌 readLine()을 사용하면 한 줄 전체 입력 가능
✅ 5. BufferedReader vs Scanner
기능 | BufferedReader | Scanner |
입력 방식 | readLine()으로 한 줄 입력 | next(), nextInt() 등 다양한 방식 |
입력 속도 | 빠름 (버퍼 사용) | 느림 (버퍼 없음) |
공백 처리 | 수동 처리 필요 | 자동 분리 가능 |
데이터 변환 | Integer.parseInt() 필요 | nextInt(), nextDouble() 사용 가능 |
사용 사례 | 대량 데이터 입력 | 소규모 입력, 간단한 콘솔 입력 |
📌 BufferedReader는 속도가 빠르므로 대량 데이터 입력 처리에 유리
📌 Scanner는 nextInt(), nextDouble() 같은 편의 기능이 많음
✅ 6. BufferedReader + StringTokenizer (빠른 입력 처리)
import java.io.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
while (st.hasMoreTokens()) {
System.out.println(st.nextToken()); // 공백 단위로 분리된 토큰 출력
}
br.close();
}
}
📌 입력 속도가 빠르고, 공백 단위로 데이터를 쉽게 분리 가능
✅ 7. BufferedReader 주요 메서드 정리
메서드 | 설명 |
readLine() | 한 줄 읽기 (null 반환 가능) |
read() | 한 문자 읽기 (int 반환) |
read(char[] buffer, int off, int len) | 문자 배열에 읽기 |
skip(long n) | n개 문자 건너뛰기 |
ready() | 입력이 준비되었는지 확인 (boolean) |
mark(int readAheadLimit) | 현재 위치 저장 |
reset() | mark() 한 위치로 되돌리기 |
close() | 스트림 닫기 |
출처 : ChatGPT
'BE > Java' 카테고리의 다른 글
[Java] 체인호출 (0) | 2025.03.24 |
---|---|
[Java] File I/O (0) | 2025.03.18 |
[Java] StringTokenizer (0) | 2025.03.16 |
[Java] 네이버 포매터(Naver Formatter) (0) | 2025.03.11 |
[Java] 롬복과 어노테이션 프로세서 (1) | 2025.03.08 |