-
[JAVA] BufferedReader, BufferedWriterMiscellaneous Dictionary 2022. 7. 25. 10:48
개념
* 버퍼를 이용하여 입출력한다.
* 입출력 효율이 매우 좋다. 실제로 Scanner 보다 훨씬 빠르다. 그 이유는 다음과 같다. 외부 장치와 메모리 사이의 데이터 입출력은 당연히 cpu의 속도나 메모리 내부에서의 속도보다 훨씬 느리다. 따라서 버퍼가 없이 키보드가 눌릴 때마다 메모리로 전송하는 것보다, 버퍼를 두고 데이터를 모아서 한번에 메모리와 소통하는 것이 더 빠른 것이다. 비유하자면 흙을 한 번 삽질할때마다 갖다 버리는 것 보다, 수레에 가득 채워서 갖다 버리는게 더 효율적인 것과 같은 이치이다.
* 버퍼 사이즈는 지정할 수도 있고, 지정하지 않을 경우 디폴트 사이즈가 적용된다.
1. BufferedReader
* Scanner는 '띄어쓰기'와 '개행(엔터)'를 경계로 입력 값을 인식하므로 매우 편리하지만 느리다. 반면 BufferedReader는 '개행(엔터)'만 경계로 인식하고 받은 데이터가 String으로 고정되기 때문에 따로 가공이 필요하지만 빠르다.
* BufferedReader에서 공백 단위로 데이터를 끊으려면, StringTokenizer 또는 String 클래스의 split() 메서드를 사용하면 된다.
2. BufferedWriter
* sout 과 동일한 기능이지만 역시 더 빠르다.
* 개행을 위해 write() 메서드에서 출력할 내용에 개행문자 \n 을 넣어주거나 newLine() 메서드를 쓰면 된다.
* 다 쓴 후 flush() 메서드를 통해 버퍼를 비우고 close() 메서드로 스트림을 닫아주어야 한다.
공식 문서
1) BufferedReader
https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/io/BufferedReader.html
2) BufferedWriter
https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/io/BufferedWriter.html출처
https://jhnyang.tistory.com/92'Miscellaneous Dictionary' 카테고리의 다른 글
[Spring] @Data 어노테이션 (0) 2022.07.27 [JAVA] extends, implements (0) 2022.07.25 [JAVA] Lombok 사용을 위한 설정 (0) 2022.07.24 [JAVA] ear , war, jar 파일이란? (0) 2022.07.24 [Java][Error] variable might not have been initialized (0) 2022.07.21