>Java >Java베이스 >Java의 직렬화 란 무엇입니까?

Java의 직렬화 란 무엇입니까?

(*-*)浩
(*-*)浩원래의
2019-11-13 13:36:413343검색

Java의 직렬화 란 무엇입니까?

직렬화: 힙 메모리의 Java 개체 데이터를 말하며 어떤 방식으로든 디스크 파일에 저장되거나 다른 네트워크 노드로 전달됩니다(네트워크 전송). 이 프로세스를 직렬화라고 하며 일반적으로 데이터 구조나 객체를 바이너리로 변환하는 프로세스를 나타냅니다. ㅋㅋㅋ                      (추천 학습: java 강좌 )

저장 또는 네트워크 전송을 위해 객체를 바이너리로 변환합니다.

직렬화의 역할

① 메모리에 있는 객체를 파일이나 데이터베이스에 저장하고 싶을 때

② 소켓을 사용하여 네트워크를 통해 객체를 전송하고 싶을 때; RMI를 통해 객체의 경우 일부 애플리케이션 시나리오에서는 객체를 바이너리로 변환하여 저장된 객체를 성공적으로 읽을 수 있도록 합니다.

Java 직렬화 구현

객체 직렬화를 달성하려면 가장 직접적인 작업은 직렬화 가능 인터페이스를 구현하는 것입니다.

IO 스트림의 객체 스트림을 사용하면 직렬화 작업을 구현하고 객체를 파일에 저장한 다음 읽을 수 있습니다. 그것은 나온다.

먼저 객체를 생성하고 직렬화 가능 인터페이스를 구현합니다.

import java.io.Serializable;

public class User implements Serializable{
    private static final long serialVersionUID = 1L;
    private String name;
    private int age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "User [name=" + name + ", age=" + age + "]";
    }
}

객체 스트림을 사용하여 객체를 저장하고 읽기 위한 도구 클래스를 작성합니다.

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class SerializeUtil {
    // 保存对象,序列化
    public static void saveObject(Object object) throws Exception {
        ObjectOutputStream out = null;
        FileOutputStream fout = null;
        try {
            fout = new FileOutputStream("D:/1.txt");
            out = new ObjectOutputStream(fout);
            out.writeObject(object);
        } finally {
            fout.close();
            out.close();
        }
    }
    // 读取对象,反序列化
    public static Object readObject() throws Exception {
        ObjectInputStream in = null;
        FileInputStream fin = null;
        try {
            fin = new FileInputStream("D:/1.txt");
            in = new ObjectInputStream(fin);
            Object object = in.readObject();
            return object;
        } finally {
            fin.close();
            in.close();
        }
    }
}

테스트:

public class Main {
    public static void main(String[] args) {
        User user = new User();
        user.setName("旭旭宝宝");
        user.setAge(33);
        // 保存
        try {
            SerializeUtil.saveObject(user);
        } catch (Exception e) {
            System.out.println("保存时异常:" + e.getMessage());
        }
        // 读取
        User userObject;
        try {
            userObject = (User) SerializeUtil.readObject();
            System.out.println(userObject);
        } catch (Exception e) {
            System.out.println("读取时异常:" + e.getMessage());
        }
    }
}

테스트 결과:

위 내용은 Java의 직렬화 란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.