Tässä opetusohjelmassa opitaan Java ObjectOutputStreamista ja sen menetelmistä esimerkkien avulla.
ObjectInputStreamLuokan java.iopaketti voidaan käyttää lukemaan objekteja, jotka olivat aiemmin kirjoittanut ObjectOutputStream.
Se laajentaa InputStreamabstraktia luokkaa.

Ennen kuin opit ObjectInputStreamluokasta, varmista, että tiedät ObjectOutputStream-luokasta.
ObjectInputStreamin toiminta
Sitä ObjectInputStreamkäytetään pääasiassa ObjectOutputStream.
Pohjimmiltaan ObjectOutputStreammuuntaa Java-objektit vastaaviksi virroiksi. Tätä kutsutaan sarjallisuudeksi. Nämä muunnetut virrat voidaan tallentaa tiedostoihin tai siirtää verkkojen kautta.
Jos nyt meidän on luettava nuo objektit, käytämme sitä ObjectInputStream, joka muuntaa virrat takaisin vastaaviksi objekteiksi. Tätä kutsutaan deserialisaatioksi.
Luo ObjectInputStream
Objektinsyöttövirran luomiseksi meidän on java.io.ObjectInputStreamensin tuotava paketti. Kun tuot paketin, voimme luoda tulovirran seuraavasti.
// Creates a file input stream linked with the specified file FileInputStream fileStream = new FileInputStream(String file); // Creates an object input stream using the file input stream ObjectInputStream objStream = new ObjectInputStream(fileStream);
Edellä olevassa esimerkissä olemme luoneet objStream-nimisen objektinsyöttövirran, joka on linkitetty fileStream-nimiseen tiedoston syötevirtaan.
Nyt sitä objStreamvoidaan käyttää objektien lukemiseen tiedostosta.
ObjectInputStream-menetelmät
ObjectInputStreamLuokka antaa toteutuksia eri menetelmien esittää vuoden InputStreamluokassa.
read () Menetelmä
read()- lukee tavun tietoja tulovirrastareadBoolean()- lukee tietoja loogisessa muodossareadChar()- lukee tietoja merkkimuodossareadInt()- lukee tietoja kokonaislukunareadObject()- lukee objektin tulovirrasta
Esimerkki 1: Java ObjectInputStream
Katsotaanpa, kuinka voimme käyttää ObjectInputStreamluokkaa luokan kirjoittamien objektien lukemiseen ObjectOutputStream.
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; class Main ( public static void main(String() args) ( int data1 = 5; String data2 = "This is programiz"; try ( FileOutputStream file = new FileOutputStream("file.txt"); ObjectOutputStream output = new ObjectOutputStream(file); // Writing to the file using ObjectOutputStream output.writeInt(data1); output.writeObject(data2); FileInputStream fileStream = new FileInputStream("file.txt"); // Creating an object input stream ObjectInputStream objStream = new ObjectInputStream(fileStream); //Using the readInt() method System.out.println("Integer data :" + objStream.readInt()); // Using the readObject() method System.out.println("String data: " + objStream.readObject()); output.close(); objStream.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) )
Tuotos
Kokonaislukutiedot: 5 Merkkijonotiedot: Tämä on ohjelmoitu
Yllä olevassa esimerkissä olemme käyttäneet readInt()ja readObject()-menetelmää kokonaisluku- ja objektidatan lukemiseksi tiedostosta.
Tässä olemme ObjectOutputStreamkirjoittaneet tietoja tiedostoon. Luemme sitten tiedot tiedostosta ObjectInputStream.
Esimerkki 2: Java ObjectInputStream
Katsotaanpa toinen käytännön esimerkki,
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; class Dog implements Serializable ( String name; String breed; public Dog(String name, String breed) ( this.name = name; this.breed = breed; ) ) class Main ( public static void main(String() args) ( // Creates an object of Dog class Dog dog = new Dog("Tyson", "Labrador"); try ( FileOutputStream file = new FileOutputStream("file.txt"); // Creates an ObjectOutputStream ObjectOutputStream output = new ObjectOutputStream(file); // Writes objects to the output stream output.writeObject(dog); FileInputStream fileStream = new FileInputStream("file.txt"); // Creates an ObjectInputStream ObjectInputStream input = new ObjectInputStream(fileStream); // Reads the objects Dog newDog = (Dog) input.readObject(); System.out.println("Dog Name: " + newDog.name); System.out.println("Dog Breed: " + newDog.breed); output.close(); input.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) )
Tuotos
Koiran nimi: Tyson-koirarotu: Labrador
Yllä olevassa esimerkissä olemme luoneet
ObjectOutputStreamnimetty lähtö käyttämälläFileOutputStreamnimettyä tiedostoaObjectInputStreamnimetty syöttö käyttämälläFileInputStreamnimettyä fileStreamia- Koiran luokan koira
Tässä olemme sitten kirjoittaneet objektin tiedostoon objektin ulostulovirralla. Ja objektin syötevirta objektin lukemiseksi tiedostosta.
Huomaa : Koiraluokka toteuttaa Serializablekäyttöliittymän. Se johtuu siitä, että ObjectOutputStreamainoa kirjoittaa sarjoitettavat objektit lähtövirtaan.
Muut ObjectInputStreamin menetelmät
| Menetelmät | Kuvaukset |
|---|---|
available() | palauttaa käytettävissä olevan tavujen määrän syöttövirrassa |
mark() | merkitsee syötevirran sijainnin, johon tiedot on luettu |
reset() | palauttaa ohjauksen tulovirran pisteeseen, johon merkki asetettiin |
skipBytes() | ohittaa ja hylkää määritetyt tavut tulovirrasta |
close() | sulkee kohteen syötevirran |
Lisätietoja on Java ObjectInputStream -sivustossa (virallinen Java-dokumentaatio).








