[Java] 버퍼 입출력

[Java] 버퍼 입출력

728x90

버퍼

데이터를 잠시 저장 하기 위한 메모리

하기 위한 메모리 시스템의 속도나 효율 상승

입력 버퍼 스트림 BufferedReader / BufferedInputStream

BufferedReader(Reader in) : in을 연결하는 디폴트 크기(16384byte)의 문자 입력 버퍼 스트림 생성

생성 BufferedReader(Reader in, int size) : in을 연결하는 size 크기의 문자 입력 버퍼 스트림 생성

생성 BufferedInputStream(InputStream in) : in을 연결하는 디폴트 크기(2048byte)의 입력 버퍼 스트림 객체 생성

생성 BufferedInputStream(InputStream in, int size) : in을 연결하는 size 크기의 입력 버퍼 스트림 객체 생성

BufferedReader 메소드

함수 설명 void close() 입력 스트림을 닫고, 사용하던 자원을 해제 void mark(int readAheadLimit) 스트림의 현재 위치를 마킹 int read() 한 글자만 읽어서 정수형으로 반환 String readLine() 한 줄을 읽음 (입력할 때 사용) boolean ready() 입력 스트림이 사용할 준비가 되었는지 확인 (1이 준비완료)

BufferedReader 사용법

Scanner와 비슷

Scanner : 버퍼의 크기가 작기 때문에 수행시간이 오래 걸린다

→ Scanner의 단점 극복 : BufferedReader

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

BufferedReader : 개행문자만 경계 로 인식, 입력받은 데이터는 String으로 고정 , 동기화 되기 때문에 안전

로 인식, , 동기화 되기 때문에 안전 → 다른타입으로 입력받고자하면 Integer.parseInt(), Double.parseDouble(),.. 등 형변환을 해줘야 한다

readLine()의 예외처리는 throws IOException 을 통해서 처리

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 선언 String text = br.readLine(); // text 한 줄 입력 int i = Integer.parseInt(br.readLine()); // 입력 받은 대상을 int로 형변환 String str = String.valueOf(i); // 입력받은 i(int)를 다시 String으로 변환 char ch1 = text.charAt(0); // text길이가 1인 경우, string->char로 형변환 char[] ch2 = text.toCharArray(); // text길이가 2이상인 경우, String->char로 형 변환

출력 버퍼 스트림 BufferedWriter / BufferedOutputStream

BufferedWriter(Writer out) : out을 연결하는 디폴트 크기(16384byte)의 문자 출력 버퍼 스트림 생성

생성 BufferedWriter(Writer out, int size) : out을 연결하는 size 크기의 문자 출력 버퍼 스트림 생성

생성 BufferedOutputStream(OutputStream out) : out을 연결하는 디폴트 크기(512byte)의 출력 버퍼 스트림 객체 생성

생성 BufferedOutputStream(OutputStream out, int size) : out을 연결하는 size 크기의 출력 버퍼 스트림 객체 생성

BufferedWriter 메소드

함수 설명 void close() 스트림 닫기, 닫기전 flush()를 통해서 버퍼 비우기 void flush() 스트림 버퍼 비우기 void newLine() 개행 문자 역할

bw.write(

")을 통해서도 가능 void write(int c) 한 글자 출력 void write(String s, int offset, int len) 문자열의 offset부터 len만큼 출력 void write(char[] buf, int offset, int len) 배열의 offset부터 len만큼 출력

BufferedWriter 사용법

System.out.print와 비슷

System.out.print : 버퍼의 크기가 작기 때문에 수행시간이 오래 걸린다

→ System.out.print의 단점 극복 : BufferedWriter

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

BufferedWriter : System.out.println()처럼 출력, 개행을 동시에 해주지 않는다

→ 개행을 하려면 newLine() or bw.write("

")을 통해서 개행 해야 한다

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); // 선언 String str = "abcde"; bw.write(str); // 문자열 str 출력 bw.newLine(); // 개행 bw.write("

"); // 개행 bw.flush(); // 버퍼 전부 출력 bw.close();

flush()

버퍼 스트림은 버퍼가 꽉 찼을 때만 출력되는 특징 보유

버퍼에 있는 데이터를 강제로 출력 하려면 flush() 메소드 호출

728x90

반응형

from http://cs-ssupport.tistory.com/166 by ccl(A) rewrite - 2021-12-17 17:01:45