코딩테스트/백준
[Java] BufferedReader & BufferedWriter
까루카라
2024. 1. 3. 00:19
BufferedReader & BufferedWriter
BufferedReader : Scanner 와 유사
BufferedWriter : System.out.println();과 유사
기존에 사용하던 Scanner, System.out.println();보다 속도 측면에서 훨씬 빠르기 때문에 많은 데이터를 처리할 때 유리하다.
: 입력된 데이터가 바로 전달되지 않고 버퍼를 거쳐 전달되므로 데이터 처리 효율성을 높임
BufferedReader
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
readLine();
- readLine() 사용 시 리턴값이 String으로 고정되기 때문에 다른 타입으로 입력을 받으려면 형변환을 꼭 해주어야 한다.
- 예외 처리를 꼭 해주어야 한다. (안하면 에러)
- Line 단위로만 나눠지기 때문에 공백 단위로 데이터를 가공하는 작업이 필요하다.
형변환
// 입력 받은 데이터는 String으로 고정되기 때문에 int로 타입캐스팅 해주어야 함.
int n = Integer.parseInt(br.readLine());
에러처리 방법
(1) 클래스를 import 해준다.
import java.io.IOException;
(2) main 클래스 옆에 throws IOException를 작성한다.
public static void main(String[] args) throws IOException {}
공백 단위 가공
import java.util.StringTokenizer;
StringTokenizer st = new StringTokenizer(s); //StringTokenizer인자값에 입력 문자열 넣음
int a = Integer.parseInt(st.nextToken()); //첫번째 호출
int b = Integer.parseInt(st.nextToken()); //두번째 호출
String array[] = s.split(" "); //공백마다 데이터 끊어서 배열에 넣음
BufferedWriter
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
//할당된 버퍼에 값 넣어주기
String s = "abcdefg"; //출력할 문자열
bw.write(s+"\n"); //버퍼에 있는 값 전부 출력
bw.flush(); //남아있는 데이터를 모두 출력시킴
bw.close(); //스트림을 닫음
버퍼를 잡아 놓았기 때문에 실행 후 flush() / close()를 반드시 호출해 뒤처리를 해주어야 한다.
bw.write()는 자동 개행 기능이 없기 때문에 개행을 하려면 \n을 따로 처리해주어야 한다.