사소한 개발지식/JAVA

JAVA - BufferedReader / BufferedWriter (입출력 함수)

KimBY 2019. 9. 26. 17:10
728x90
반응형

BufferedReader / BufferedWriter

 

 - Buffer에 입력데이터를 모아서 한번에 전달하기 때문에 속도,효율성 측면에서 성능이 좋다.

 - 백준 알고리즘 2741번 문제를 Scanner와 BufferedReader로 코딩시 Scanner(696ms) / BufferedReader(192ms)

 

 

BufferedReader

import java.io.*;

public class Main {
	// BufferedReader 사용 시 예외처리 필수!
	public static void main(String[] args) throws Exception {
    	// 콘솔 입력 시 BufferedReader 객체 생성
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        // readLine() 매서드 리턴값은 String이어서 숫자 입력시 형변환 필수!
        int N = Integer.parseInt(br.readLine());
        
        String line = "";
        // 더 이상 입력값이 없을 때까지 1줄씩 읽는다.
       	for(int i=0; (line=br.readLine()) !== null; i++;) {
        	System.out.println(line);
         }
	}
}

 - readLine() 시 한 줄 단위로 데이터를 읽기 때문에 공백 단위로 데이터를 읽기 위해서는 StringTokenizer 객체나

   String의 split 매서드를 사용하여야 한다.

 

 

BufferedReader 매서드

 

 - (void) close() : 입력스트림을 닫는다.(Closes the stream and releases any system resources associated with it.)

 - (void) mark() : 스트림의 현재 위치를 마킹합니다.(Marks the present position in the system.)

 - (boolean) markSupported() : 스트림이 mark 기능을 지원하는지 true/false로 알려줍니다.

                                         (Tells whether this stream supports the mark() operation, which it does.)

 - (int) read() : 한 글자만 읽어 정수형으로 반환.(Reads a single character.)

 - (int) read(char[] cbuf, int offset, int length) : cbuf의 offset위치부터 length만큼 문자를 읽어옵니다.

                                                            (Reads characters into a portion of an array.)

 - (String) readLine() : 한 줄을 읽어 String으로 반환.(Reads a line of text.)

 - (boolean) ready() : 입력스트림이 사용할 준비가 되어있는지 확인.

                             (Tells whether this stream is ready to be read.)

 - (void) reset() : 마킹이 있으면 그 위치부터 다시 시작, 그렇지 않으면 처음부터 다시 시작합니다.

                      (Resets the stream to the most recent mark.)

 - (long) skip(long n) : n개의 문자를 건너뜁니다. (Skips characters.)

 

 

BufferedWriter

import java.io.*;
 
public class Main {
    public static void main(String[] args) throws IOException {
    	// 콘솔에 출력
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
        bw.write("hello\n"); // 버퍼에 쓰기
        bw.newLine(); // 개행(줄바꿈)
        bw.write("I am writing\n");
        bw.flush(); // 버퍼 비우기(버퍼에 저장된 데이터는 출력)
        bw.close();
    }
}

 

 

BufferedWriter 매서드

 

 - (void) close() : 스트림을 닫습니다. 닫기 전에 flushing 필수.(Closes the stream, flushing it first.)

 - (void) flush() : 스트림을 비웁니다.(Flushes the stream.)

 - (void) newLine() : 개행문자 쓰기.(Writes a line separator.)

 - (void) write(char[] cbuf, int offset, int length) : 버퍼 offset위치부터 length크기만큼 write 씁니다.

 - (void) write(int c) : 한 글자 쓰기.(Writes a single character.)

 - (void) write(String s, int offset, int length) : 문자열에서 offset부터 일정 길이만큼 쓰기.

                                                           (Writes a portion of a String.)

 

 

참고 : https://jhnyang.tistory.com/92

728x90
반응형