반응형
BufferedReader
BufferedReader 은 Scanner 과 같은 기능이다. 다만 속도 측면에서 훨씬 빨라 속도가 중요한 알고리즘에서 필수적으로 사용된다.
작성해야 할 코드는 더 많지만 시간과 메모리 측면에서 훨씬 효율이 좋다.
BufferedReader 사용법
BufferedReader 의 인스턴스를 생성해준다. 아래와 같이 생성해주면 된다.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
그리고 readLine을 이용해 String으로만 값을 받아온다.
String a = br.readLine(); // String
Enter 줄마다 값으로 인식해, 여러개의 값이 한 줄에 있을 경우 StringTokenizer 로 값을 나눠줘야 한다.
StringTokenizer
StringTokenizer 은 아래와 같이 사용할 수 있다.
StringTokenizer st;
st = new StringTokenizer(String값);
Char a = st.nextToken();
int b = Integer.parseInt(st.nextToken());
BufferedReader, StringTokenizer 같이 사용 예시
아래와 같이 사용할 수 있다. BufferedReader 은 기본 String 값이기 때문에, int 로 사용하고 싶으면 Integer.parseInt 를 같이 사용해야 한다.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
String brline = br.readLind();
st = new StringTokenizer(brline);
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
// for 문
int[] arr = new int[brline.length];
for (int i = 0; i < brline.length ; i++){
arr[i] = Integer.parseInt(st.nextToken());
}
BufferedWriter
BufferedWrite 은 System.out.println(); 의 역할이라고 보면 된다.
데이터를 메모리의 버퍼에 저장한 후, 일정량이 쌓이면 한 번에 파일에 기록한다.
* flush()
flush 메서드를 이용하여 버퍼의 내용을 강제로 파일에 기록할 수 있다.
* close()
close() 메서드를 호출하면 자동으로 flush()가 호출되어 모든 데이터가 파일에 기록된다.
사용 시 유의점은, flush 와 close 를 통해 꼭 종료해줘야 한다는 점이다. 빼먹으면 결과가 출력되지 않는다.
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
bw.write('출력');
bw.flush();
bw.close();
반응형