drexqq

[Java, 자바] BufferedReader, BufferedWriter 본문

Back-End/Java

[Java, 자바] BufferedReader, BufferedWriter

drexqq 2020. 5. 29. 19:53
728x90
반응형

BufferedReader/BufferedWriter는 Buffer에 있는 IO 클래스다.

입력된 데이터가 바로 전달되지 않고 중간에 버퍼링이 된 후에 전달된다.

출력도 마찬가지로 버퍼를 거쳐서 간접적으로 출력장치로 전달된다.

때문에 시스템의 데이터처리 효율성을 높여주고 버퍼스트림을InputStreamReader / OutputStreamWriter를 같이 사용하여 버퍼링을 하게 되면 입출력 스트림으로부터 미리 버퍼에 데이터를 갖다 놓기 때문에 보다 효율적인 입출력이 가능하다.

 

BufferedReader

선언

BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); //선언
String s = bf.readLine(); //String
int i = Integer.parseInt(bf.readLine()); //Int

ps. readLine()시 리턴값을 String으로 고정, 예외처리를 꼭 해주어야한다는 점

 

데이터 가공

StringTokenizer st = new StringTokenizer(s); //StringTokenizer인자값에 입력 문자열 넣음

//StringTokenizer에 nextToken()함수를 쓰면 readLine()을 통해 입력받은 값을 공백단위로 구분하여 순서대로 호출
int a = Integer.parseInt(st.nextToken()); //첫번째 호출
int b = Integer.parseInt(st.nextToken()); //두번째 호출

//String.split()함수를 활용
String array[] = s.split(" "); //공백마다 데이터 끊어서 배열에 넣음

 

BufferedWriter

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));//선언
String s = "abcdefg";//출력할 문자열
bw.write(s+"\n");//출력
bw.flush();//남아있는 데이터를 모두 출력시킴
bw.close();//스트림을 닫음

ps. BufferedWriter의 경우 버퍼를 잡아 놓았기 때문에 반드시 flush() / close() 를 반드시 호출
    개행을 해주어야할 경우에는 \n를 통해 따로 처리

 

 

메서드명 

 기능

 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 readLine()

 스트림으로부터 한 줄을 읽어 문자열로 리턴​​

 void mark() 

 현재우치를 마킹, 차 후 reset() 을 이용하여 마킹위치부터 시작함

 void reset() 

 마킹이 있으면 그 위치에서부터 다시시각, 그렇지 않으면 처음부터 다시시작

 long skip(int n)

 n 개의 문자를 건너 뜀

 void close()

 스트림 닫음

 void write(int c)

 int 형으로 문자 데이터를 출력문자스트림으로 출력

 void write(String s, int offset, int length)

 문자열 s를 offset 위치부터 length 길이만큼을 출력스트림으로 출력

 void write(char[] buf, int offset, int length)

 문자배열 buf의 offset 위치부터 length 길이만큼을 출력스트림으로 출력​​​

 void newLine()

 줄바꿈 문자열 출력

 void flush() 

 남아있는 데이터를 모두 출력시킴.

728x90
반응형
Comments