자바 에 서 는 바 이 너 리 파일 과 텍스트 파일 을 사용 하 는 것 외 에 데이터 기반 데이터 작업 도 있 습 니 다.여기 서 Data 는 자바 의 기본 데이터 형식 과 String 을 말 합 니 다.기본 데이터 형식 은 byte,int,char,long,float,double,boolean 과 short 를 포함한다.자바 의 기본 데이터 형식 에 대해 언급 해 야 할 두 가지 유형 은 DataInputStream 과 DataOutputStream 이다.이들 은 자바 의 기본 데이터 형식 에 대한 조작 을 제 공 했 지만,이러한 방법 은 사실상 두 개의 중요 한 인터페이스 에서 정 의 된 DataInput 과 DataOutput 이다.이들 의 기능 은 바 이 너 리 바이트 흐름 을 자바 의 기본 데이터 형식 으로 바 꾸 는 동시에 데이터 에서 UTF-8 인 코딩 을 사용 하여 String 을 구축 하 는 기능 도 제공한다.중요 한 클래스 인 RandomAccessFile 은 DataInput 과 DataOutput 두 개의 인 터 페 이 스 를 실현 하여 그 가 파일 을 동시에 쓰 고 읽 을 수 있 도록 한다.DataInputStream 과 DataOutputStream 두 가지 유형 에서 의 방법 은 모두 간단 하 다.기본 구 조 는 readXXXX()와 writeXXXX()인 데 그 중에서 XXXX 는 기본 데이터 형식 이나 String 을 대표 한다.여기 서 는 설명 이 많 지 않 지만 주의해 야 할 것 은 자바 의 유 니 코드 인 코딩 규칙 을 읽 을 필요 가 있 습 니 다.API doc 에서 비교적 상세 하 게 소개 되 어 있 습 니 다.일반적으로 우리 의 대상 은 자바 의 기본 데이터 형식 으로 구성 되 어 있 습 니 다.예 를 들 어 한 사람의 정 보 는 이름,이메일,전화번호 와 성별 등 을 포함 합 니 다.사실 우 리 는 DataInputStream 의 방법 과 DataOutputStream 의 방법 으로 일정한 순서에 따라 데 이 터 를 흐름 에 기록 한 다음 에 같은 순서에 따라 그들 을 읽 을 수 있다.이것 이 바로 우리 가 실현 한 직렬 화 이다.이것 은 데이터 전송 에 사용 할 수 있다.예 를 들 어 J2ME 인터넷 프로그램 에서 직렬 화 체 제 를 사용 하여 데 이 터 를 전송 할 수 있다.다음은 우리 가 어떻게 스스로 서열 화 를 실현 하 는 지 보 자.우선 우 리 는 두 개의 구조 함수 중 하 나 를 비 워 야 한다. public Account() { } public Account(String userName, String email, int age, boolean gender) { this.userName = userName; this.email = email; this.age = age; this.gender = gender; }우리 가 직렬 화 할 때 도 간단 합 니 다.우 리 는 DataOutput Stream 에 대상 의 구성원 변 수 를 순서대로 기록 할 뿐 입 니 다.예 를 들 어:public void serialize(DataOutput Stream dos)throws IOException{dos.writeUTF(userName); dos.writeUTF(email); dos.writeInt(age); dos.writeBoolean(gender); }우리 가 역 직렬 화 를 할 때 같은 순서 로 DataInputStream 에서 데 이 터 를 읽 고 구성원 변 수 를 할당 합 니 다.예 를 들 어:public static Account deserialize(DataInputStream dis)throws IOException{Account account=new Account(); account.userName = dis.readUTF(); account.email = dis.readUTF(); account.age = dis.readInt(); account.gender = dis.readBoolean(); return account; }디 버 깅 에 편리 하도록 toString()방법 으로 대상 의 실제 정 보 를 출력 합 니 다.이것 은 좋 은 습관 이다. public String toString() { return "UserName = " + userName + " Email = " + email + " age = " + age + " gender = " + (gender ? "male" : "female"); }테스트 서열 화 를 위해 아래 프로그램 을 작성 하여 테스트 를 진행 합 니 다.코드 는 비교적 간단 합 니 다. package com.j2medev.mingjava; import java.io.*; public class TestDataIO { public static void main(String[] args) throws IOException { Account account = new Account("mingjava","
[email protected]",25,true); System.out.println("before serialization........."); System.out.println(account.toString()); ByteArrayOutputStream baos = new ByteArrayOutputStream(); DataOutputStream dos = new DataOutputStream(baos); account.serialize(dos); DataInputStream dis = new DataInputStream(new ByteArrayInputStream(baos.toByteArray())); Account sAccount = Account.deserialize(dis); System.out.println("after serialization.........."); System.out.println(sAccount.toString()); dos.close(); dis.close(); } } package com.j2medev.mingjava; import java.io.*; public class Account { private String userName = ""; private String email = ""; private int age = 0; private boolean gender = false; public Account() {} public Account(String userName, String email, int age, boolean gender) { this.userName = userName; this.email = email; this.age = age; this.gender = gender; } public void serialize(DataOutputStream dos) throws IOException { dos.writeUTF(userName); dos.writeUTF(email); dos.writeInt(age); dos.writeBoolean(gender); } public static Account deserialize(DataInputStream dis) throws IOException { Account account = new Account(); account.userName = dis.readUTF(); account.email = dis.readUTF(); account.age = dis.readInt(); account.gender = dis.readBoolean(); return account; } public String toString() { return "UserName = " + userName + " Email = " + email + " age = " + age + " gender = " + (gender ? "male" : "female"); }}컴 파일 러 가 콘 솔 에서 출력:before serialization...UserName=mingjava
[email protected] age = 25 gender = male after serialization.......... UserName = mingjava Email =
[email protected]=25 gender=male 서열 화 성공,나중에 J2ME 인터넷 에서 직렬 화 메커니즘 을 어떻게 사용 하 는 지 이야기 하 겠 습 니 다.