본문으로 바로가기

[Java] 입출력 BufferReader / BufferedWriter

category JAVA 2022. 6. 16. 22:05
728x90

주제

  • 정의
  • BufferedReader와 BufferedWriter의 사용법

BufferdReader / BufferedWriter

  • 버퍼를 통해 읽고 쓰는 함수
  • 입출력 데이터가 바로 전달되지 않고 중간에 버퍼링이 된 후 전달 됨
  • 속도가 빠르다

BufferedReader

  • 입력 스트림에서 문자를 읽는 함수
  • 문자나 배열, 라인들을 효율적으로 읽기 위해 문자들을 버퍼에 저장하고 읽는 방법을 취함(버퍼링)
  • 버퍼 사이즈는 사용자 지정이 가능하고 기본 디폴트사이즈가 사용됨
  • Enter만 경계로 인식하고 있음
  • 입력된데이터 타입이 String으로 고정됨

 

사용 방법

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

public static void main(String[] args) throws IOException {
	
    // 선언방법
    BufferReader bf = new BufferedReader(new InputStreamReader(System.in));
    
    // 라인 단위로 입력 받기(Enter 경계)
    String str = bf.readLine();
    
    // 정수형 입력시 형변환
    int i = Integer.parseInt(bf.readLine());
    
    // 공백을 경계로 끊어야 할 경우 1
    String arr[] = str.split(" ");
    
    // 공백을 경계를 끊어야 할 경우 2
    StringTokenizer st = new StringTokenizer(str);
    int a = Integer.parseInt(st.nextToken());	// 첫번째 호출
    int b = Integer.parseInt(st.nextToken());	// 두번째 호출
    
    bf.close()	// 입출력 종료 후 닫기
}

BufferedWriter

  • 한번에 모았다가 출력가능
  • 버퍼를 정의해줬기 때문에 마지막에 반드시 flush() / close() 를 이용해 마무리 해야함
  • System.out.println() 처럼 자동개행 기능이 없어 필요시 \n을 이용한 개행처리 필요

 

사용방법

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

public static void main(String[] args) throws IOException {
	
    // 선언방법
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
    String str = "str";
    
    // 출력
    bw.writer(str);
    
    // 개행
    bw.newLine();
    
    // 남아있는 모든 데이터 출력
    bw.flush();
    
    // 스트림 닫기
    bw.close();
}

 


메소드

메소드 명 기능
BufferedReader(Reader rd) rd에 연결되는 문자입력 버퍼 스트림 생성
BufferedWriter(Writer wt) wt에 연결되는 문자 출력 버퍼스트림 생성
int read() 스트림으로부터 한 문자를 읽어서 int 형으로 리턴
int read(char[] buf) 문자 배열 buf의 크기만큼 문자를 읽어들임.  읽어들인 문자 수를 리턴
int read(char[] buf, int offset, int length) buf의 offset위치에서부터 length길이 만큼 문자를 스트림으로부터 읽어들임
String readLint() 스트림으로부터 한 줄을 읽어 문자열로 리턴
void mark() 현재 위치를 마킹, 차후 reset()을 이용해 마킹위치부터 시작
void reset() 마킹 존재시 그 위치부터 다시시간, 그렇지 않으면 처음부터 다시 시작
long skip(int n) n개의 문자를 건너 뜀
void close() 스트림 닫음
void writer(int c) int 형으로 문자 데이터를 출력 문자 스트림으로 출력
void write(Sring s, int offset, int length) 문저열 s를 offset위치부터 length길이 만큼을 출력스트림으로 출력
void write(char[] buf, int offset, int length) 문자배열 buf의 offset위치부터 length 길이 만큼 출력스트림으로 출력
void newLine() 줄바꿈 문자열 출력
void flush() 남아 있는 데이터를 모두 출력시킴

 

728x90

'JAVA' 카테고리의 다른 글

[Java] StringBuilder 사용 방법 및 주요 메소드  (0) 2022.06.16