백엔드개발/Java

[JAVA] BufferedReader와 Bufferedwriter

aaahyunseo 2024. 10. 12. 03:16

백준 15552번 문제를 풀던 중

BufferedReader와 Bufferedwriter를

이용해 문제를 풀라고 하길래

급하게 배워보는 중


BufferedReader

: Scanner 대신 사용 가능

※주의할 점은 데이터를 받을 때

enter로만 구분 가능하고,

데이터를 string형식으로 받음.

Bufferedwriter

: System.out.println(); 대신 사용 가능

이 두개를 사용하면

입출력 시 빠른 속도로

사용할 수 있음.

이유는

입력된 데이터가 바로 전달되지 않고

버퍼를 거쳐 전달되기 때문에

데이터 처리 효울성이 높아서 라고 함.


사용 전

import java.io.*;

임포트 필수

또는 아래와 같이

필요한 것만 불러오기도 가능

또한

BufferedReader를 쓰기 위해서는

예외처리가 필수

예외처리

try&catch를 사용하기도 하지만

대개 throws IOException을 사용.

import java.io.IOException;

public static void main(String[] args) throws IOException{}

클래스 임포트와

main 클래스 옆에 throws IOException 선언.


(1)BufferedReader

본격적인 선언은

BufferedReader br = new BufferedReader(new InputStreamReader(System.in);

String a = br.readLine();

int b = Integer.parseInt(br.readLine());

이렇게 받은 데이터를

공백단위로 가공하기 위해서는

(1) String.split()함수 사용

이는 파이썬에서

공백 구분해주던 그 방법과 동일

(2)StringTokenizer과 nextToken()함수

StringTokenizer st = new StringTokenizer(i);

int a = Integer.parseInt(st.nextToken());


Scanner 사용시 이제야 안 사실인데

따로 분리 코드를 작성하지 않더라도

nextLine(), nextInt()가

알아서 분리해주는 역할이었음

.

.

굿..

split()이런거 필요없음


(2)BufferedWriter

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

Stirng a = "java";

bw.write(s+"\n");

bw.flush();

bw.close();

반드시 flush()와 close()를 사용해

닫아주어야 함.

flush()는 버퍼에 있는 데이터를 다 털어내는 것..?

==>구글링의 결과

버퍼에 있는 데이터를 클라이언트에 전송하고 비워내는 것.

**원래는 가득 차면 자동으로 비워지지만

flush()를 사용하면

당장 비워짐.


백준 15552번 풀이

scanner가 아닌

bufferedReader를 사용해야 했던 문제

baekjoon_15552


백준 11021번

연습삼아 다음 문제도

scanner대신 buffer를 사용해서 품

문제는 매우 간단

baekjoon_11021(1)

이렇게 제출 했을 때

메모리, 시간, 코드길이

baekjoon_11021(2)

이번에는 scanner를 사용해서 품

(근데 입출력이 저렇게 나와도

정답으로 인식되는지 이제 알았다...)

이때 메모리, 시간, 코드길이

확실히 코드 길이는 scanner가 짧지만

메모리나 시간은

buffer가 훨씬 빠름.

'백엔드개발 > Java' 카테고리의 다른 글

[Java] 일급 컬렉션  (0) 2024.10.30
[JAVA] StringBuilder  (2) 2024.10.12
[JAVA] 멘토씨리즈 자바 Chapter7  (3) 2024.10.12
[JAVA] 멘토씨리즈 자바 Chapter6  (2) 2024.10.12
[Java] 멘토씨리즈 자바 Chapter02-Chapter05  (1) 2024.10.12