자바 의 직렬 화 와 반 직렬 화 를 상세 하 게 해석 하 다.
자바 직렬 화 와 반 직렬 화 는 무엇 입 니까?
자바 직렬 화 는 자바 대상 을 바이트 시퀀스 로 변환 하 는 과정 을 말 하 며,자바 반 직렬 화 는 바이트 시퀀스 를 자바 대상 으로 복원 하 는 과정 을 말한다.
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();
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
웹 개발 자가 가지 고 있 는 CentOS 작은 책저 는 이 길이 앞으로 나 아 가 는 것 이 라 고 생각 했 지만 길 은 빙빙 돌 고 있 습 니 다.종이 위 에 있 는 것 은 결국 얕 은 것 을 깨 닫 고 처음에 보면 종종 무슨 일 인지 모 르 며 전체적인 경지 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.