아래의 문서를 번역 및 요약하였습니다.
http://www.cs.brown.edu/courses/cs161/papers/j-nio-ltr.pdf
------------------------------------------------------------
3. 채널과 버퍼(Channels and Buffers)
3-1. 개요
Channel과 Buffer는 NIO의 핵심 Object로 모든 I/O시에 사용된다.
Channel은 original I/O와 유사하다.
NIO의 모든 데이터는 어디든 Input, Output 될 수 있으며 모든 데이터는 Channel Object를 통해 이동된다.
Buffer는 일반적으로 Container역할을 하는 Object이다.
채널을 통해 이동되는 모든 데이터는 처음에 Buffer상에 로드된다, 즉 채널로 읽어들인 데이터는 Buffer로 읽을 수 있다.
3-2. Buffer란 무엇인가?
Buffer는 Write하거나 읽기위한 데이터가 저장되는 Object로 Original I/O에는 없는 NIO만의 특별한 개념이다
NIO엣의 모든 data는 Buffer를 통해서만 Access하거나 사용할 수 있다
Buffer는 기본적으로 배열이다.(A buffer is essentially an array)
일반적으로 bytes 배열의 형태를 취하며, 다른 type의 배열로도 사용될 수 있다.
물론 단순 배열이 아니라, 데이터의 처리를 위해 특별한 기능이 추가된 배열이라 보는것이 맞을 것이다.
3-3. Buffer의 종류
일반적으로 사용되는 Buffer는 ByteBuffer이다. 하지만 사용자는 용도에 따라서 아래의 Buffer를 사용할 수 있다.
- ByteBuffer
- CharBuffer
- ShortBuffer
- IntBuffer
- LongBuffer
- FloatBuffer
- DoubleBuffer
모든 Buffer는 Buffer Interface의 상속을 받는 형태이다.
3-4. Channel이란 무엇인가?
Channel은 데이터를 쓰거나 읽을수 있는 객체이다.
Original I/O와 비교했을때 NIO는 Stream과 유사하다.
앞서 언급했듯이 모든 데이터의 access는 Buffer object를 통해서만 가능하며, Channel에 직접 데이터를 쓰거나 읽을 수 없다.
3-5. Channel의 종류
Channel은 양방향(bi-directional)이라는 측면에서 stream과는 다르다.
Stream이 inputstream이나 outputstream과 같이 단방향성 data의 이동이 있을수 있는 반면, Channel은 단일 object로 read와 write를 동시에 할 수 있다. 이것은 운영체제(특히 UNIX 계열)의 IO특성을 잘 반영한 모델이라 볼 수 있다.
http://www.cs.brown.edu/courses/cs161/papers/j-nio-ltr.pdf
------------------------------------------------------------
3. 채널과 버퍼(Channels and Buffers)
3-1. 개요
Channel과 Buffer는 NIO의 핵심 Object로 모든 I/O시에 사용된다.
Channel은 original I/O와 유사하다.
NIO의 모든 데이터는 어디든 Input, Output 될 수 있으며 모든 데이터는 Channel Object를 통해 이동된다.
Buffer는 일반적으로 Container역할을 하는 Object이다.
채널을 통해 이동되는 모든 데이터는 처음에 Buffer상에 로드된다, 즉 채널로 읽어들인 데이터는 Buffer로 읽을 수 있다.
3-2. Buffer란 무엇인가?
Buffer는 Write하거나 읽기위한 데이터가 저장되는 Object로 Original I/O에는 없는 NIO만의 특별한 개념이다
NIO엣의 모든 data는 Buffer를 통해서만 Access하거나 사용할 수 있다
Buffer는 기본적으로 배열이다.(A buffer is essentially an array)
일반적으로 bytes 배열의 형태를 취하며, 다른 type의 배열로도 사용될 수 있다.
물론 단순 배열이 아니라, 데이터의 처리를 위해 특별한 기능이 추가된 배열이라 보는것이 맞을 것이다.
3-3. Buffer의 종류
일반적으로 사용되는 Buffer는 ByteBuffer이다. 하지만 사용자는 용도에 따라서 아래의 Buffer를 사용할 수 있다.
- ByteBuffer
- CharBuffer
- ShortBuffer
- IntBuffer
- LongBuffer
- FloatBuffer
- DoubleBuffer
모든 Buffer는 Buffer Interface의 상속을 받는 형태이다.
3-4. Channel이란 무엇인가?
Channel은 데이터를 쓰거나 읽을수 있는 객체이다.
Original I/O와 비교했을때 NIO는 Stream과 유사하다.
앞서 언급했듯이 모든 데이터의 access는 Buffer object를 통해서만 가능하며, Channel에 직접 데이터를 쓰거나 읽을 수 없다.
3-5. Channel의 종류
Channel은 양방향(bi-directional)이라는 측면에서 stream과는 다르다.
Stream이 inputstream이나 outputstream과 같이 단방향성 data의 이동이 있을수 있는 반면, Channel은 단일 object로 read와 write를 동시에 할 수 있다. 이것은 운영체제(특히 UNIX 계열)의 IO특성을 잘 반영한 모델이라 볼 수 있다.
'Expired > Java Works' 카테고리의 다른 글
Java로 구현하는 웹기반 원격제어 프로그램 (8) | 2009.04.19 |
---|---|
자막(smi) 파일에서 대본 추출 프로그램 (6) | 2008.11.09 |
NIO 강좌 - 2 (0) | 2008.02.09 |
PC상의 로컬 파일을 전송하기 위한 간단한 서블릿 예제.. (0) | 2008.01.28 |
Java로 EXE 파일 실행..(Excuting exe file by Java Program) (0) | 2007.12.29 |