JAVA이야기

스트림개요

НooпeУ 2011. 7. 29. 11:52
버퍼는 읽거나 쓸 수 있는 데이터 저장소로서 배열과 유사.
채널은 IO 연산을 수행할 수 있는 대상과의 연결을 표현하는 것으로써 버퍼, 파일 그리고 소켓을 포함한다.

nio는 new io?  No
non blocking 의 약자
(자바 튜닝 이야기라는 책에서는 new io라고 한다. 하지만 자바 프로그래밍 언어라는 책에서는 non blocking이라고 함. 썬에서 집필한 책이니깐 이게 더 신뢰가 간다)

그 이유
채널 기반의 IO와 스트림 기반의 IO 사이에 주요한 차이점은 채널이 중단 가능한 블로킹 연산 뿐만 아니라 논 블로킹 IO연산도 허용한다. 이것은 고성능 애플리케이션을 만들 때 매우 유용한 기능이다.

java.net 패키지는 소켓을 사용하여스트림이나 채널 기반으로 네트워크 IO를 지원 

InputStreamReader와 OutputStreamWriter
변환 스트림인 InputStreamReader와 OutputStreamWriter는 지정된 문자 집합 인코딩이나 로컬시스템의기본 인코딩을 사용하여 바이트스트림을 문자스트림으로 변환한다.
UTF-8 을 UTF-16로 변환

public InputStreamReader(InputStream in)
기본 문자 집합 인코딩을 사용해 바이트스트림을 문자스트림으로 변환

public InputStreamReader(InputStream in, Charset c)
주어진 문자 집합 인코딩을 사용해 바이트스트림을 문자스트림으로 변환

public InputStreamReader(InputStream in, String enc)
명명된 문자 집합 인코딩을 찾아서 바이트스트림을 문자스트림으로 변환
못찾으면 UnSupportenodingException 발생

변환스트림을 닫기 위해서는 연관된 스트림도 닫아야한다.

문자스트림을 바이트스트림으로 바꾸기 위한 클래스는 존재하지 않는다.