language/java

BufferedReader / BufferedWriter

BufferedReader는 Scanner처럼 데이터를 받아온다

BufferedWriter는 System.out.println();처럼 데이터를 출력한다

BufferedReader/BufferedWriter는 버퍼를 이용하기 때문에 Scanner/System.out.println()보다 빠른 입출력을 제공한다.

 

1. BufferedReader 사용법

1.1 readLine()

- 입력값으로 받은 데이터를 라인 단위로 읽어 String으로 반환(다른 타입으로 입력 받으려면 형변환)

- 예외처리 필수(try&catch 또는 throws IOException 활용)

1.2 close()

- BufferedReader를 통한 입력이 끝나면 입력 스트림을 닫는다

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main{
	public static void main(String[] args) throws IOException { //throws로 예외처리
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String s = br.readLine(); //String 반환
        int i = Integer.parseInt(br.readLine()); //Integer로 형변환
    }
}

 

2. 입력받은 데이터 공백 단위로 구분하기

2.1 StringTokenizer에 nextToken()함수 사용

- readLine()으로 입력받은 데이터를 공백단위로 구분

- 한 줄에 여러개의 데이터를 입력받을 수 있다

2.2 String.split(" ")메소드 사용

- 데이터를 공백 단위로 끊어서 배열에 삽입

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main{
	public static void main(String[] args) throws IOException { //throws로 예외처리
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        
        //br.readLine()으로 읽어온 데이터를 Integer로 형변환 후
        //StringTokenizer를 이용해 공백 단위로 구분하고
        //nextToken()을 통해 순서대로 호출한다
        int a = Integer.parseInt(st.nextToken());
        int b = Integer.parseInt(st.nextToken());
        
        //데이터를 공백 단위로 끊어서 배열에 삽입한다
        String s = br.readLine();
        String array[] = s.split(" "); 
    }
}

 

3. BufferedWriter 사용법

3.1 write()

- 출력할 데이터를 버퍼에 담는다

3.2 flush()

- 데이터를 출력하고 버퍼를 비운다

3.2 String.valueOf()

- 정수를 출력하기 위해 String으로 형변환이 필요하다

import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;

public class Main{
	public static void main(String[] args) throws IOException { //throws로 예외처리
    	BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        //1. 문자열 출력
        String s = "Hello World!";
        bw.write(s+"\n");
        bw.flush(); //버퍼에 남아있는 데이터를 모두 출력하고 버퍼를 비운다
        //2. 정수 출력
        bw.write(String.valueOf(5)); //String으로 형변환 후 출력
        bw.flush();
        bw.close(); //스트림 닫기
    }
}

- BufferedWriter의 경우에는 flush() / close()를 반드시 호출하여 버퍼를 비우고 스트림을 닫아주어야 한다

'language > java' 카테고리의 다른 글

StringBuilder  (0) 2021.06.21