[컴] java 에서 stream 과 reader/writer 의 차이

java io / i/o 이해 /

java 에서 stream 과 reader/writer 의 차이

java에서 2개의 I/O class 가 있다.

  • stream
  • readers/writers

stream

stream 이 큰 범위라고 보면 된다. 모든 io관련 작업들을 할 수 있는 것이 stream 이다. binary data 읽고, 쓰는 작업들이 존재하면 거기에 stream 을 사용한다고 보면 된다. 예를 들어 network 에서 data를 읽고 쓰기 하면 NetworkReadStream 이 있다고 생각하면 된다. 실제로는 Socket.getInputStream() 등을 통해 얻을 수 있다. 그래서 stream 이 가능한 곳들은 data를 주고받는 모든 장치들이 될 것이다.

  • network
  • file
  • data 를 주고받는 다른 장치들

readers/writers

이 readers/writers 는 text 를 읽고, 쓸 때 쓰인다. stream 위에 layer 를 하나 더 둔 것이다. 그래서 binary data 를 일고 이것을 character 로 바꿔서 주는 것이다.

buffered I/O

그런데 이렇게 한 byte씩 읽고 쓰는 것은 느리다. 그래서 메모리에 buffer를 두고 사용한다.

ref. 1에 좋은 예제를 보여주는데,

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

위는 System.in 이라는 InputStream 에 Reader를 씌운것이다. 그래서 System.in 이라는 InputStream 에서 읽어오는 byte를 text 로 변환하는 것이다. 그리고 이 값을 BufferedReader 로 씌운다. 그러면 이것을 읽어서 buffer 에 담는 reader가 만들어지게 되는 것이다.

Reference

  1. What exactly does “Stream” and “Buffer” mean in Java I/O? - Stack Overflow
  2. Lesson: Basic I/O (The Java™ Tutorials > Essential Java Classes)

댓글 없음:

댓글 쓰기