[JAVA] BufferedReader, BufferedWriter

[JAVA] BufferedReader, BufferedWriter


  • BufferedReader, BufferedWriter모두 Buffer에 있는 IO클래스
  • 입력된 데이터가 바로 전달되지 않고 중간에 버퍼링이 된후에 전달됨
  • 출력도 마찬가지로 버퍼를 거쳐서 간접적으로 출력장치에 전달되기에 시스템의 데이터처리 효율성을 높여줌
  • 버퍼 스트림을 InputStreamReader/ OutputStreamWriter를 같이 사용하여 버퍼링을 하게 되면 입출력 스트림으로부터 미리 버퍼에 데이터를 갖다 놓기 때문에 보다 효율적인 입출력이 가능

BufferedReader

  • Java를 처음 접하는 분들이 주로 받는 입력방식은 Scanner.
    • Scanner를 통해 입력을 받을 경우 Space, Enter를 모두 경계로 인식하기에 입력받은 데이터를 가공하기에 매우 편리
  • BufferedReader는 Enter만 경계로 인식하고 받는 데이터가 String으로 고정되기 때문에 입력받은 데이터를 가공하는 작업이 필요한 경우가 많음
    • 그러나, 많은 양의 데이터를 입력받을 경우 BufferedReader를 통해 입력받는 것이 효율면에서 훨씬 나음
    • 입력시 Buffer 메모리줌으로써 작업속도 차이가 많이 난다


BufferedWriter

  • Java를 처음 접하는 분들이 주로 출력하는 방식은 System.out.println("")
    • 적은양의 출력일 경우 성능차이가 미미하지만 많은 양의 출력을 할때는 Buffer로 해주는것이 좋음


InputStreamReader

  • 바이트 스트림을 문자 스트림으로 변환을 제공
    • 문자로 변환하는 경우 인코딩 방식은 특정 방식으로 지정할 수도 있고 경우에 따라서는 플랫폼의 기본 인코딩을 사용
  • InputStreamReader는 한 문자씩 읽음

OutputStreamReader

  • 문자 스트림을 바이트 스트림으로 변환을 제공
    • 문자로 변환하는 경우 인코딩 방식은 특정 방식으로 지정할 수도 있고 경우에 따라서는 플랫폼의 기본 인코딩을 사용
  • OutputStreamReader는 한 문자씩 읽음


출처


댓글

이 블로그의 인기 게시물

[Python] # -*- coding: utf-8 -*-를 쓰는 이유

[소프트웨어공학] NS(Nassi-Schneiderman) 차트

[컴퓨터네트워크] Telnet이란?