Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> java

Освоение Java ObjectInputStream: подробное руководство

Класс Java ObjectInputStream

Класс ObjectInputStream в пакете java.io позволяет десериализовать объекты, ранее записанные через ObjectOutputStream. Он расширяет абстрактный класс InputStream.

Перед изучением ObjectInputStream убедитесь, что вы знакомы с классом ObjectOutputStream, который отвечает за сериализацию.


Как работает ObjectInputStream

Сериализация преобразует Java-объекты в байтовый поток для хранения или передачи. Десериализация — обратный процесс — обрабатывается ObjectInputStream, который читает байтовый поток и восстанавливает исходные объекты.


Создание ObjectInputStream

Импортируйте класс и свяжите его с источником, обычно FileInputStream:

// Связь с файлом
FileInputStream fileStream = new FileInputStream("example.dat");
// Обертывание в ObjectInputStream
ObjectInputStream objStream = new ObjectInputStream(fileStream);

После создания objStream может читать любые сериализованные объекты из файла.


Ключевые методы ObjectInputStream


Пример 1: Базовая десериализация

Минимальный пример записи целого числа и строки в файл, затем чтения обратно.

import java.io.*;

public class Main {
    public static void main(String[] args) {
        int data1 = 5;
        String data2 = "This is programiz";
        try {
            // Запись данных
            FileOutputStream fos = new FileOutputStream("file.txt");
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeInt(data1);
            oos.writeObject(data2);
            // Чтение данных
            FileInputStream fis = new FileInputStream("file.txt");
            ObjectInputStream ois = new ObjectInputStream(fis);
            System.out.println("Integer data :" + ois.readInt());
            System.out.println("String data :" + ois.readObject());
            oos.close();
            ois.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Вывод

Integer data :5
String data :This is programiz

Пример 2: Десериализация пользовательского объекта

Сериализация и десериализация простого объекта Dog. Класс должен реализовывать Serializable.

import java.io.*;

class Dog implements Serializable {
    String name;
    String breed;
    Dog(String name, String breed) {
        this.name = name;
        this.breed = breed;
    }
}

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog("Tyson", "Labrador");
        try {
            // Сериализация
            FileOutputStream fos = new FileOutputStream("file.txt");
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(dog);
            // Десериализация
            FileInputStream fis = new FileInputStream("file.txt");
            ObjectInputStream ois = new ObjectInputStream(fis);
            Dog newDog = (Dog) ois.readObject();
            System.out.println("Dog Name: " + newDog.name);
            System.out.println("Dog Breed: " + newDog.breed);
            oos.close();
            ois.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Вывод

Dog Name: Tyson
Dog Breed: Labrador

Ключевые выводы:


Дополнительные методы ObjectInputStream

МетодОписание
available()Возвращает количество байтов, читаемых без блокировки.
mark()Помечает текущую позицию в потоке.
reset()Возвращает поток к последней отметке.
skipBytes(int n)Пропускает n байт.
close()Закрывает поток и освобождает ресурсы.

Для глубокого изучения посетите официальную документацию Java.

java

  1. Ключевое слово final в Java: переменные, методы и классы
  2. Оператор instanceof в Java: полное руководство с примерами
  3. Наследование в Java: концепции, типы и практические примеры
  4. Статические вложенные классы в Java: использование, отличия и примеры
  5. Анонимные внутренние классы в Java: определение, синтаксис и практические примеры
  6. Паттерн Singleton в Java: как реализовать и безопасно использовать
  7. Рефлексия в Java: инспекция классов, методов и полей во время выполнения
  8. Освоение Java ObjectOutputStream: сериализация, методы и практические примеры
  9. Освоение Java Generics: создание переиспользуемого, типобезопасного кода
  10. Мастерство файловых операций в Java с java.io: создание, чтение, запись и удаление