자바 의 직렬 화 와 반 직렬 화 를 상세 하 게 해석 하 다.

자신 이 무엇 을 하고 싶 은 지 모 르 면 먼저 일 하 세 요.일 만 하면 쌀,장,간장,친구,믿음 을 얻 을 수 있다.일 하면 서 진정 으로 하고 싶 은 일 을 찾 을 수 있 으 니 절대 빈 둥 거리 지 마라.
자바 직렬 화 와 반 직렬 화 는 무엇 입 니까?
자바 직렬 화 는 자바 대상 을 바이트 시퀀스 로 변환 하 는 과정 을 말 하 며,자바 반 직렬 화 는 바이트 시퀀스 를 자바 대상 으로 복원 하 는 과정 을 말한다.
4.567917.직렬 화:대상 직렬 화의 가장 주요 한 용 도 는 대상 을 전달 하고 보존 할 때 대상 의 완전 성과 전달 성 을 확보 하 는 것 이다.직렬 화 는 대상 을 네트워크 에서 전송 하거나 로 컬 파일 에 저장 할 수 있 도록 질서 있 는 바이트 흐름 으로 변환 하 는 것 이다.핵심 역할 은 대상 상태의 보존 과 재건 이다
4.567917.반 직렬 화:클 라 이언 트 는 파일 이나 네트워크 에서 직렬 화 된 대상 바이트 흐름 을 얻 고 바이트 흐름 에 저 장 된 대상 상태 와 설명 정 보 를 바탕 으로 반 직렬 화 를 통 해 대상 을 재 구축 합 니 다
왜 직렬 화 와 반 직렬 화가 필요 합 니까?
왜 서열 화 를 해 야 합 니까?그것 은 바로 서열 화의 장점 을 말 하 는 것 입 니 다.서열 화 는 어떤 장점 이 있 습 니까?그래서 우 리 는 서열 화 를 해 야 합 니 다.
1.대상 의 직렬 화 는 분포 식 대상 을 실현 할 수 있다.
주요 응용 예:RMI(즉 원 격 호출 Remote Method Invocation)는 대상 을 이용 하여 원 격 호스트 의 서 비 스 를 직렬 화하 여 로 컬 컴퓨터 에서 대상 을 실행 할 때 와 같이 실행 해 야 합 니 다.
2.자바 대상 의 직렬 화 는 한 대상 의 데 이 터 를 보존 할 뿐만 아니 라 대상 이 인용 한 모든 대상 의 데 이 터 를 재 귀적 으로 저장 합 니 다.
전체 대상 차원 을 바이트 흐름 에 기록 할 수 있 으 며 파일 에 저장 하거나 네트워크 연결 에 전달 할 수 있 습 니 다.대상 의 직렬 화 를 이용 하여 대상 의'딥 복사',즉 대상 자체 와 인용 대상 자 체 를 복제 할 수 있다.대상 을 서열 화하 면 전체 대상 서열 을 얻 을 수 있다.
3.직렬 화 는 메모리 의 클래스 를 파일 이나 데이터 베이스 에 기록 할 수 있 습 니 다.
예 를 들 어 특정한 종 류 를 정렬 한 후에 파일 로 저장 하고 다음 에 읽 을 때 파일 의 데 이 터 를 반 정렬 하면 원래 의 종 류 를 메모리 에 복원 할 수 있 습 니 다.클래스 를 스 트림 데이터 로 정렬 하여 전송 할 수도 있다.
전체적으로 말 하면 이미 실례 화 된 클래스 를 파일 로 저장 하 는 것 이다.다음 에 실례 화가 필요 할 때 반 서열 화하 기만 하면 클래스 를 메모리 에 실례 화하 고 서열 화 된 클래스 의 모든 변수 와 상 태 를 보류할 수 있다.
4.대상,파일,데이터,다양한 형식 이 있어 서 통일 적 으로 전송 하고 저장 하기 어렵 습 니 다.
직렬 화 이후 에는 모두 바이트 흐름 이다.원래 무엇 이 든 똑 같은 것 이 될 수 있 으 면 통용 되 는 형식 으로 전송 하거나 저장 할 수 있다.전송 이 끝 난 후에 다시 사용 하려 면 반 직렬 화 복원 을 한다.이렇게 대상 이 든 대상 이 든 파일 이 든 파일 이 든.
어떻게 자바 직렬 화 와 반 직렬 화 를 실현 합 니까?
우선 직렬 화 클래스 를 준비 하여 Serializabel 인 터 페 이 스 를 실현 해 야 한다
예 를 들 어 우 리 는 Person 류 의 name 과 age 를 모두 직렬 화 해 야 한다.
import java.io.Serializable;

public class Person implements Serializable { //       
    private String name;
    private int age;
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public String toString() {
        return "  :" + this.name + ",  " + this.age;
    }
}

그 다음:우 리 는 name 과 age 를 직렬 화 합 니 다.(즉,이 두 대상 을 바 이 너 리 로 바 꾸 어'깨 뜨리 기'로 이해 합 니 다)
package org.lxh.SerDemo;
import java.io.File;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;

public class ObjectOutputStreamDemo { //   
    public static void main(String[] args) throws Exception {
        //            
        File file = new File("D:" + File.separator + "person.ser");
        ObjectOutputStream oos = null;
        //   ( )
        oos = new ObjectOutputStream(new FileOutputStream(file));
        //    
        Person per = new Person("  ", 30);
        oos.writeObject(per); //       
        oos.close();
    }
}

좋은 웹페이지 즐겨찾기