Developer Factory

24. JAVA binary 스트림과 character 스트림의 비교 본문

Developer/Java

24. JAVA binary 스트림과 character 스트림의 비교

Jeremy.Park 2014. 7. 3. 00:20
 /* binary 스트림과  character 스트림의 비교
 * 1) binary 스트림 클래스
 * - 바이트단위로 데이터를 읽고 쓴다.
 * - InputStream, outputStream의 자손 클래스들이다.
 * - 클래스 이름 뒤에 InputStream/OutputStream이 붙는다.
 *
 * 2) character 스트림 클래스
 * - 문자단위( Unicode 2byte)로 데이터를 읽고 쓴다.
 * - Reader/Writer의 자손 클래스들이다.
 * - 클래스 이름 뒤에 Reader/Writer가 붙는다.
 * - 쓰기 => Unicode를 운영체제의 기본 인코딩으로 변환하여 출력한다.
 * - 입력 => 읽은 데이터를 유니코드로 변환하여 리턴한다.
 */

FileOutputStream 
DataOutputStream 

/* Data Processing Stream Class
 * - 중간에서 다른 스트림 객체에게 데이터를 가공하여 전달.
 * 다른 스트림 객체로부터 읽어들인 데이터를 가공하여 리턴
 * - 직접 파일, 메모리 등으로 입/출력 불가능
 *
 * 예) DataInputStream, DataOutputStream
 * - byte, short, int 등의 데이터를 좀 더 쉽게 입/출력할 수 있는 기능 제공
 */




                FileReader
             // 텍스트 데이터 읽기를 통한 동작 비교
             // 문자 스트림으로 읽기
             // 읽어들인 데이터는 유니코드로 변환한다.
             // - 영어는 1바이트 읽어서 2바이트 유니코드로 변환
             // - 한글 (UTF-8)은 3바이트 읽어서 2바이트 유니코드로 변환
             // 변환한 유니코드를 리턴한다.




Serializable
       // 바이트 배열로 출력할 때 현재 클래스의 버전을 기록한다.
       // => 읽는 쪽에서 버전에 맞추어 읽을 수 있다.
class Student implements Serializable {
 private static final long serialVersionUID = 1L ;
}















             // ObjectOutputStream
             // - 인스턴스의 클래스 정보와 데이터가 함께 출력된다.
             // - Serialize가 허용된 인스턴스의 경우 출력 가능
             // => 허용되지 않은 인스턴스를 출력하려 한다면
             // => NotSerializableException 발생
             // - 해결 방법 : 클래스에 Serialize를 허용한다고 선언할것.
             // 문법 : class 클래스명 implements Serializable { ... }