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가 만들어지게 되는 것이다.
댓글 없음:
댓글 쓰기