입출력 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()
함수를 이용하여 스트림을 닫아주어야 한다.