BufferedReader 와 Bufferedwriter

박영준·2023년 5월 23일
0

Java

목록 보기
76/112

1. 정의

BufferedReader
Scanner 와 유사하다

Bufferedwriter
System.out.println(); 과 유사하다

2. 장단점

장점

BufferedReader 와 Bufferedwriter 모두 (scanner와 System.out.println()에 비해)
훨씬 빠르기 때문에 多 데이터 처리 시 유리하다.
-> 입력된 데이터가 바로 전달되지 않고 Buffer(버퍼)를 거쳐 전달되므로, 데이터 처리 효율성을 높임

단점

BufferdReader 의 경우

  • Enter 만 경계로 인식
  • 받은 데이터가 String으로 고정되므로, 입력받은 데이터를 가공하는 작업이 필요한 경우 多

3. 사용법

1) import 추가

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

2) BuffredReader 사용법

BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));		// 선언
String s = bf.readLine();						// String
int i = Integer.parseInt(bf.readLine());			// Int
  • readLine();
    • 주의점 1 : 리턴값은 String으로 고정되므로, String이 아닌 다른 타입으로 입력을 받을 시 형 변환이 반드시 필요
    • 주의점 2 : 예외처리가 필요 (보통 throws IOException 로 작업)
      • throw 이용 시
        • 1) import java.io.IOException; -> 클래스를 import해주어야 한다.
        • 2) public static void main(String[] args) throws IOException {} -> main 클래스 옆에 throws IOException를 작성한다.

공백 단위로 데이터 가공할 경우의 방법

StringTokenizer st = new StringTokenizer(s);		// StringTokenizer인자값에 입력 문자열 넣음
// 방법 1
int a = Integer.parseInt(st.nextToken());		// 첫번째 호출
int b = Integer.parseInt(st.nextToken());		// 두번째 호출

// 방법 2
String array[] = s.split(" ");		// 공백마다 데이터 끊어서 배열에 넣음
  • Read한 데이터는 Line단위로만 나눠지므로, 공백 단위로 데이터를 가공하려면 따로 작업이 필요

  • 방법 1

    • StringTokenizer에 nextToken()함수를 쓰면, readLine()을 통해 입력받은 값을 공백 단위로 구분하여 순서대로 호출 가능
  • 방법 2

    • String.split()함수를 쓰면, 배열에 공백 단위로 끊어서 데이터를 넣어서 사용 가능

2) BufferedWriter 사용법

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));		// 할당된 버퍼에 값 넣어주기
String s = "abcdefg";		// 출력할 문자열
bw.write(s+"\n");		// 버퍼에 있는 값 전부 출력
bw.flush();		// 남아있는 데이터를 모두 출력시킴
bw.close();		// 스트림을 닫음
  • BufferedWriter 의 경우
    버퍼를 잡아 놓았기 때문에, 반드시 flush() / close() 를 반드시 호출해서 뒤처리가 필요

  • bw.write 에는 System.out.println();과 같이 자동 개행 기능이 없기 때문에
    개행을 할 경우 \n 를 통해 따로 처리 필요


참고: [JAVA] BufferedReader 와 Bufferedwriter 사용법

profile
개발자로 거듭나기!

0개의 댓글