본문 바로가기

Programming/JAVA

BufferedReader, BufferedWriter를 이용한 빠른 입출력

1. Java의 입력 방법

: Java 사용 시 입력 방법은 크게 두 가지 방법을 사용한다. Scanner를 이용하여 입력하는 방법과 BufferedReader를 이용하여 입력하는 방법 

 

2. Scanner 

: 자바에서 입력받을 때 주로 쓰이는 클래스로 정수, 실수, 문자열을 읽어올 수 있다.

import java.util.Scanner;		// scanner를 사용하기 위해 외부 클래스 호출 (java.util 패키지에 포함된다)

public class main{
	public static void main(String args[]){
    	Scanner scan = new Scanner(System.in);		// 객체 생성 후 System.in으로 입력한 값을 바이트 단위로 읽는다.
		
        String name;
        int age;
        
        System.out.print("이름 :");
        name = scan.next();
        
        System.out.print("나이 :");
        age = scan.nextInt();
        
        sc.close();	// Scanner가 참조하고 있는 스트림을 닫는다.

	}
}

->Scanner 클래스를 이용한 입력은 데이터의 양이 적을 때는 문제가 되지 않으나 그 수가 커지면 Scanner를 이용하기에 한계를 느낄 수 있다.

 

 

3. BufferedReader

: Buffer에 있는 IO 클래스로 입력된 데이터가 바로 전달되지 않고 중간에 버퍼링이 된 후 전달된다.  BufferedReader는 Enter만 경계로 인식하고 받은 데이터가 String으로 고정되기 때문에 데이터 가공 작업이 필요하다. 

 

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));	// 선언

String str = br.readLine();	// readLine() 메소드를 이용해 입력

int i = Integer.parseInt(br.readLine());	// readLine() 메소드는 String 고정이기때문에 형변환을 해줘야한다.

 

-StringTokenizer

: BufferedReader는 Line단위로만 나뉘어지기때문에 공백단위로 데이터를 가공하려면 따로 작업을 해주어야한다. 이때 가장 많이 사용하는 방법으로는 StringTokenizer의 nextToken()함수를 사용하는 방법이다.

 

StringTokenizer st = new StringTokenizer(br.readLine());	// 선언

int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());

-> nextToken()을 통해 순서대로 호출한다.

 

 

4. BufferedWriter

: 자바에서 출력할 때 System.out.println() 함수를 많이 사용한다. Scanner와 마찬 가지로 적은 양의 출력일 경우 성능차이가 미세하겠지만 많은 양의 출력에서는 Buffer를 활용하는게 좋다.

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));	// 선언

String str = "Hello";

bw.write(str + "\n");	// 출력
bw.flush();	// 남아있는 데이터 모두 출력
bw.close();	// stream 종료

-> BufferedWriter의 경우 Buffer를 잡아 놓았기 때문에 반드시 flush()와 close()를 호출해주어야한다. 

'Programming > JAVA' 카테고리의 다른 글

자바의 클래스  (0) 2019.12.27
자바의 참조 타입과 배열  (0) 2019.12.23
자바의 제어문 (조건문과 반복문)  (0) 2019.12.19
자바의 연산  (0) 2019.12.17
자바의 변수와 타입  (0) 2019.12.13