Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Java

Java ObjectInputStream: Uitgebreide gids voor deserialisatie

Java ObjectInputStream-klasse

Ontdek hoe je geserialiseerde objecten in Java leest met ObjectInputStream, met stapsgewijze voorbeelden en praktische tips.

De ObjectInputStream-klasse in het java.io-pakket stelt je in staat om objecten te deserialiseren die eerder geschreven zijn door ObjectOutputStream. Het breidt de abstracte InputStream-klasse uit.

Hoe ObjectInputStream werkt

Serialisatie transformeert Java-objecten naar een bytestream die opgeslagen of getransporteerd kan worden. Deserialisatie – het omgekeerde proces – wordt afgehandeld door ObjectInputStream, die de bytestream leest en de oorspronkelijke objecten herstelt.

Een ObjectInputStream aanmaken

Om een ObjectInputStream aan te maken, importeer eerst de klasse en koppel het aan een bron, meestal een FileInputStream:

// Koppel aan een bestand
FileInputStream fileStream = new FileInputStream("voorbeeld.dat");
// Wrap het in een ObjectInputStream
ObjectInputStream objStream = new ObjectInputStream(fileStream);

Eenmaal geïnstantieerd kan objStream elke geserialiseerde objecten uit het bestand lezen.

Kernmethoden van ObjectInputStream

Hieronder de meest gebruikte methoden:

  • read() – leest een enkele byte
  • readBoolean() – leest een boolean-waarde
  • readChar() – leest een karakter
  • readInt() – leest een integer
  • readObject() – herstelt een object uit de stream

Voorbeeld 1: Basisdeserialisatie

Hieronder een minimaal voorbeeld dat een integer en een string naar een bestand schrijft, en ze daarna terugleest.

import java.io.*;

public class Main {
    public static void main(String[] args) {
        int data1 = 5;
        String data2 = "Dit is programiz";
        try {
            // Data schrijven
            FileOutputStream fos = new FileOutputStream("bestand.txt");
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeInt(data1);
            oos.writeObject(data2);
            // Data lezen
            FileInputStream fis = new FileInputStream("bestand.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();
        }
    }
}

Output

Integer data: 5
String data: Dit is programiz

Voorbeeld 2: Een aangepast object deserialiseren

Serialiseer en deserialiseer een simpel Hond-object. Onthoud, de klasse moet Serializable implementeren om te werken.

import java.io.*;

class Hond implements Serializable {
    String naam;
    String ras;
    Hond(String naam, String ras) {
        this.naam = naam;
        this.ras = ras;
    }
}

public class Main {
    public static void main(String[] args) {
        Hond hond = new Hond("Tyson", "Labrador");
        try {
            // Serialiseren
            FileOutputStream fos = new FileOutputStream("bestand.txt");
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(hond);
            // Deserialiseren
            FileInputStream fis = new FileInputStream("bestand.txt");
            ObjectInputStream ois = new ObjectInputStream(fis);
            Hond nieuweHond = (Hond) ois.readObject();
            System.out.println("Hond naam: " + nieuweHond.naam);
            System.out.println("Hond ras: " + nieuweHond.ras);
            oos.close();
            ois.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Output

Hond naam: Tyson
Hond ras: Labrador

Belangrijkste punten:

  • Gebruik ObjectOutputStream om objecten te schrijven
  • Gebruik ObjectInputStream om ze terug te lezen
  • Alleen objecten die Serializable implementeren kunnen geserialiseerd worden

Extra ObjectInputStream-methoden

MethodeBeschrijving
available()Retourneert het aantal bytes dat gelezen kan worden zonder te blokkeren
mark()Markeert de huidige positie in de stream
reset()Zet de stream terug naar de meest recente markering
skipBytes(int n)Slaat n bytes over
close()Sluit de stream en geeft bronnen vrij

Voor dieper inzicht, bezoek de officiële Java-documentatie.

Java

  1. Java's final-sleutelwoord begrijpen: variabelen, methoden en klassen
  2. Java instanceof operator: een uitgebreide gids
  3. Java-erfenis meesteren: concepten, typen en praktische voorbeelden
  4. Java geneste static classes begrijpen: gebruik, verschillen en voorbeelden
  5. Java anonieme inner classes meesteren: definitie, syntax en praktische voorbeelden
  6. Java Singleton patroon uitgelegd: hoe veilig te implementeren en gebruiken
  7. Java Reflectie meesteren: klassen, methoden en velden inspecteren tijdens runtime
  8. Java ArrayList meesteren: operaties, methoden en best practices
  9. Java ObjectOutputStream: Serialisatie, methoden en praktische voorbeelden
  10. Java Generics: Herbruikbare, type-veilige code bouwen
  11. Java-bestandsbewerkingen onder de knie krijgen met java.io – Aanmaken, lezen, schrijven en verwijderen