본문 바로가기
JAVA

JAVA_BufferedReader, StringTokenizer, BufferedWriter

by haheaven 2021. 10. 17.

Buffer :  읽기,쓰기가 가능한 메모리 배열 

 

 

- BufferedReader

: Scanner(기능이많음)와 같은 역할이지만 BufferedReader가 문자열에 최적화되었기 때문에 처리속도가 빠르다.

: Scanner는 space, enter 모두 경계를 갖지만  BufferedReader는 enter만 갖기 때문에 split()이나 StringTokenizer와 같은 추가 작업으로 space 구분을 할 수 있다. 

: Scanner는 때마다 출력하지만, BufferedReader 메모리에 모아서 한번에 출력한다.(입력값이 많을 때 BufferedReader의 사용이 효율적)

 

- StringTokenizer : 공백 등과 같은 구분자가 있는 상황에서 이를 제거하고 뒤에 있는 문자열을 땡겨준다.

 

- BufferedWriter  : System.out.print()와 같은 출력역할 

 


 

<BufferedReader >

 

 

백준 8393 예제.

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

public class ex03 {
	public static void main(String[] args) throws NumberFormatException, IOException { 		
        BufferedReader sb = new BufferedReader(new InputStreamReader(System.in));
        // BufferedReader의 입력 기본적으로 문자열을 받기 때문에 다른 타입원할시 '형변환'하기 
       
       // 1. readLine() 메소드 사용 
		int N = Integer.parseInt(sb.readLine());
       
       // 2. 입력 받은 후 버터 닫는 메소드 close() 사용 
		sb.close();
		int sum=0;
		for(int i=1; i<=N; i++) sum+=i;
		System.out.println(sum);
	}
}

1. readLine() 메소드 사용

:  입력한 값을 줄 단위로 읽음 

: 문자열이 리턴되기 때문에 다른 타입입력원할시 형변환 필수

: 예외처리 필수 

2. 입력받은 후 버퍼 닫는 메소드 close() 사용 : BufferedReader사용으로 열린 메모리가 새지 않게 사용 후 닫기 

 

 

 

 


 

 

<StringTokenizer>

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


public class Stringtokenizerr{
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		// 1.
        StringTokenizer st = new StringTokenizer(br.readLine()); 
		// 2.
		while(st.hasMoreTokens()) { //—> 남아 있는 토큰이 있는지 여부
        //3.
		   String token = st.nextToken();
		   System.out.println(token);

		}
	}
}

1.   br.readLine()통해서 입력하면 StringTokenizer가 공백기준으로 줄 나눔 

 

2. StringTokenizer 의 메소드 hasMoreTokens()는 boolean 반환으로  남아있는 토큰이 있으면 true를 반환 (=while문 작동)

 

3. StringTokenizer 의 메소드 nextToken()은 구분자를 통해 나눠진 문자열, 숫자의 한 덩어리?씩 반환함 

 

 

 

 


 

<BufferedWriter >

 

 

- 백준예제 11022

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

// A+B = C
public class bufferedwriterr {
	public static void main(String[] args) throws NumberFormatException, IOException {
	  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	 // 출력버퍼
      BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
	  
      // 때마다 새 객체 생성해야하므로 초기화만 설정 
      StringTokenizer st;
      
      // 더할 값 갯수 입력 위한 선언이며 숫자타입은 형변환 필수 
	  int N = Integer.parseInt(br.readLine());
      
	  for(int i =1; i<=N; i++) {
         // 더할 값 두개 입력 
		  st = new StringTokenizer(br.readLine());
          // st의 첫번째값 갖고 옴 
		  int a = Integer.parseInt(st.nextToken());
          
          // st의 두번째 값 갖고 옴 
		  int b =  Integer.parseInt(st.nextToken());
         
         // 1. write() 메소드 
		  bw.write("Case #"+i+": "+ a +" + "+ b +  " = " +(a+b)+"\n");
	  }
      // 2. 사용후 버퍼비우기
      bw.flush();
     // 3. 버퍼 닫기
	 bw.close();
     
	}
}

1. write() 

: 예외처리 필수

: 출력할 내용 담음 

 

2. bw.flush() : 사용 후 버퍼를 비우기 

3. bw.close() :버퍼 닫기 

'JAVA' 카테고리의 다른 글

JAVA_입출력  (0) 2021.11.04
JAVA_람다식(Rambda expression)  (0) 2021.08.10
JAVA_Thread1  (0) 2021.08.08
JAVA_제네릭, 열거형, 애너테이션  (0) 2021.08.07
JAVA_컬렉션 프레임워크(Set, Map)  (0) 2021.08.06

댓글