T_era
[JAVA] BufferedReader와 BufferedWriter 그리고 StringTokenizer 본문
백준 문제풀이를 하다 Buffer에 대해 보게되었다.
BufferedReader와 BufferedWriter에 대해 아라보자
BufferedReader
- 문자 입력 스트림에서 텍스트를 효율적으로 읽어들이는 데 사용되는 클래스
- 내부적으로 버퍼를 사용하여 데이터를 한 번에 일정량씩 읽어온다
- Scanner에 비해 사이즈가 월등히 크고 속도도 유의미하게 빠르
일단 사용법을 아라보자
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
System.out.println(str);
br.close();
}
}
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- 버퍼를 선언하는 코드이다.
String str = br.readLine();
- 버퍼를 이용해 입력받는 코드인데 주요 메소드들이 있다
br.readLine(); // 입력한 한줄 전체를 String 형태로 반환하고 더 이상 읽을 내용이 없으면 거기에 null을 반환한다
br.read(); // 문자 하나를 읽어 정수형으로 반환한다.
br.skip(long n);// n개의 문자를 건너뛴다.
br.close(); // 버퍼를 닫고 사용했던 자원을 해제한다
- 위와 같은 용도로 사용한다
br.close();
- 버퍼를 사용한 이후엔 반드시 닫아줘야한다.
입력은 알겠는데 출력은 어떻게 해야할까
BufferedWriter
- 마찬가지로 성능 향상을 위한 출력 버퍼이다
사용법
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
bw.write(br.readLine());
bw.flush();
bw.close();
br.close();
}
}
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
- 버퍼 선언 코드
bw.write(br.readLine());
- 문자열을 출력스트림에 쓰는 코드이다.
bw.write(String str); // 출력스트림에 문자열 입력
bw.newLine(); // 출력스트림에 줄넘김 추가
bw.flush(); // 버퍼에 남아있는 데이터를 출력 스트림에 추가
bw.close(); // 버퍼를 닫는다
- 위와 같은 용도로 사용한다
- 마찬가지로 반드시 close를 사용해야한다
try(BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)) && ){
bw.write("sss");
bw.newLine();
bw.write("ddd");
}catch (IOException e){
e.printStackTrace();
}
- BufferedReader나 BufferedWriter 둘다 trycatch를 사용하면 close 문구를 사용안해도 괜찮아진다
한줄에 띄어쓰기를 포함한 여러 문자를 추가하고 단어하나씩 사용하기
- 문자열 하나에 여러 단어가 쓰여있고 내용을 구분하고 싶을때 사용하려면 어떻게 해야 할까?
그것을 위한 클래스가 하나 있다 바로 StringTokenizer이라는 클래스다
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
// 선언 및 입력
StringTokenizer st;
st = new StringTokenizer(br.readLine());
// nextToken을 통한 출력
bw.write(st.nextToken());
bw.write(st.nextToken());
bw.flush();
bw.close();
br.close();
}
}
실행결과

Hello Java를 입력하면 공백이 기준이 되어 Hello와 Java가 출력되는 것을 확인할 수 있다
'Programing > Java' 카테고리의 다른 글
| [JAVA] 연산자 (0) | 2025.03.28 |
|---|---|
| [JAVA] 변수 (0) | 2025.03.28 |
| [JAVA] 문제풀이 : 가위바위보 (1) | 2025.03.26 |
| [JAVA] 문제풀이 : 단어 퀴즈 만들기 (0) | 2025.03.26 |
| [JAVA] 문제풀이 : 자판기 만들기 (0) | 2025.03.26 |