입출력 I/O(Input/Output) 함수이다.🍎 예를 들어 1000개의 사과를 A에서 B로 옮긴다고 상상해보자.
사과를 이동시키는 방법은 2가지가 존재한다.
첫 번째는 사과를 양 손에 2개씩 들고 A에서 B로 500번 이동하는 것이고,
두 번째는 사과를 바구니에 50개씩 담아 20번 이동하는 것이다.
당연히 바구니를 사용하여 사과를 옮기는 것이 시간과 체력 모두 세이브되는 방법이다. 이때 사용한 바구니가 바로 버퍼이다.
즉, 버퍼를 이용한 입출력은 바로 하나씩 데이터를 전달하지 않고 버퍼에 모아두고 한 번에 전달하는 방식이기 때문에 속도가 빠르고 효율적이다.
컴퓨터구조 측면에서 입출력에 대한 이야기
Space(공백), Enter(개행문자)의 경계값을 기준으로 입력 데이터를 인식하고, BufferedReader 함수는 Enter(개행문자)만을 기준으로 입력 데이터를 인식한다.public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// Case1 -> String type data
String data_string = br.readLine();
// Case2 -> Integer type data
int data_int = Integer.parseInt(br.readLine());
}
}
readLine()을 이용하여 데이터를 한 라인 단위로 읽을 수 있다. readLine()의 return 타입이 String으로 고정되어 있기 때문에 다른 타입인 경우 형변환이 필수이다.BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String str = "Hello Java";
bw.write(str);
br.close();
bw.flush(); // 남은 데이터 모두 출력
bw.close();
flush() 함수를 이용하여 남은 데이터를 모두 출력하고 close() 함수를 이용하여 스트림을 닫아주어야 한다.