Tässä opetusohjelmassa opitaan Java ObjectOutputStreamista ja sen menetelmistä esimerkkien avulla.
ObjectInputStream
Luokan java.io
paketti voidaan käyttää lukemaan objekteja, jotka olivat aiemmin kirjoittanut ObjectOutputStream
.
Se laajentaa InputStream
abstraktia luokkaa.
Ennen kuin opit ObjectInputStream
luokasta, varmista, että tiedät ObjectOutputStream-luokasta.
ObjectInputStreamin toiminta
Sitä ObjectInputStream
käytetään pääasiassa ObjectOutputStream
.
Pohjimmiltaan ObjectOutputStream
muuntaa 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.ObjectInputStream
ensin 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ä objStream
voidaan käyttää objektien lukemiseen tiedostosta.
ObjectInputStream-menetelmät
ObjectInputStream
Luokka antaa toteutuksia eri menetelmien esittää vuoden InputStream
luokassa.
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ää ObjectInputStream
luokkaa 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 ObjectOutputStream
kirjoittaneet 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
ObjectOutputStream
nimetty lähtö käyttämälläFileOutputStream
nimettyä tiedostoaObjectInputStream
nimetty syöttö käyttämälläFileInputStream
nimettyä fileStreamia- Koiran luokan koira
Tässä olemme sitten kirjoittaneet objektin tiedostoon objektin ulostulovirralla. Ja objektin syötevirta objektin lukemiseksi tiedostosta.
Huomaa : Koiraluokka toteuttaa Serializable
käyttöliittymän. Se johtuu siitä, että ObjectOutputStream
ainoa 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).