자바 의 기본 데이터 형식 과 흐름

자바 에 서 는 바 이 너 리 파일 과 텍스트 파일 을 사용 하 는 것 외 에 데이터 기반 데이터 작업 도 있 습 니 다.여기 서 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 인터넷 에서 직렬 화 메커니즘 을 어떻게 사용 하 는 지 이야기 하 겠 습 니 다.

좋은 웹페이지 즐겨찾기