BufferedReader
:Scanner와 유사.
Bufferedwriter
:System.out.println();과 유사
Scanner와 System.out.println()보다 속도 측면에서 훨씬 빠르다.
입력된 데이터가 바로 전달되지 않고 버퍼를 거쳐 전달되어 데이터의 처리 효율성을 높일 수 있다.
많은 양의 데이터를 처리할 때 유효하다.
비유하면 우리가 물건을 옮길 때 하나씩 옮기는 것이 아니라, 버퍼에 용량만큼 담았다가 한 꺼번에 전달하는 것이기 때문에 시간을 아낄 수 있는 것이다.
다만, bufferedReader는 enter만 경계로 인식하고 받은 데이터가 String으로 고정되어 입력받은 데이터를 가공하는 작업이 필요한 경우가 많다.
사용하기 전에 아래를 import해줘야 한다.
컨트롤 쉬프트 O를 누르면 알아서 이클립스에서 제시해준다.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
BufferReader도 Scanner 생성하는 것과 비슷한데, InputStreamReader 를 추가해줘야 한다.
이 과정이 위에서 설명한 버퍼에 데이터를 옮겨놓는 과정이라고 할 수 있다.
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); //선언
String s = bf.readLine(); //String
int i = Integer.parseInt(bf.readLine()); //Int
BufferReader는 스트링으로 처리되기 때문에, int로 사용하고 싶으면, parseInt를 사용해 형변환해줘야 하고, 데이터를 읽어들일 때는 readline만으로 사용한다.
Read한 데이터는 스트링이기 때문에 공백마다 데이터를 처리하게 하려면, 공백이 생겼을 때마다 배열에 따로 집어넣도록 처리를 해줘야 한다.
StringTokenizer st = new StringTokenizer(s); //StringTokenizer인자값에 입력 문자열 넣음
int a = Integer.parseInt(st.nextToken()); //첫번째 호출
int b = Integer.parseInt(st.nextToken()); //두번째 호출
String array[] = s.split(" "); //공백마다 데이터 끊어서 배열에 넣음
BufferedWriter
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); //할당된 버퍼에 값 넣어주기
String s = "abcdefg"; //출력할 문자열
bw.write(s+"\n"); //버퍼에 있는 값 전부 출력
bw.flush(); //남아있는 데이터를 모두 출력시킴
bw.close(); //스트림을 닫음
이것도 scanner사용법과 비슷한데, 버퍼에 넣어주는 과정 때문에 역시 new OutputStreamWriter라는 구문이 추가된다.
bw.write에는 System.out.println();과 같이 자동개행기능이 없기때문에 개행을 해주어야할 경우에는 \n를 통해 따로 처리해주어야 한다.
'Programming > Java' 카테고리의 다른 글
HashTable in java (0) | 2022.02.10 |
---|---|
Dynamic Arrays in Java (0) | 2022.02.10 |
ArrayList functions (0) | 2022.01.30 |
생성자와 Getter Setter (0) | 2022.01.30 |
java 제네릭 (0) | 2022.01.30 |