Java ObjectOutputStream (esimerkkien kanssa)

Tässä opetusohjelmassa opitaan Java ObjectOutputStreamista ja sen menetelmistä esimerkkien avulla.

ObjectOutputStreamLuokan java.iopaketti voidaan käyttää kirjoittamaan esineitä, jotka voidaan lukea ObjectInputStream.

Se laajentaa OutputStreamabstraktia luokkaa.

ObjectOutputStreamin toiminta

Pohjimmiltaan ObjectOutputStreamkoodaa Java-objektit luokan nimellä ja objektiarvoilla. Ja siten luo vastaavat virrat. Tätä prosessia kutsutaan sarjallisuudeksi.

Nämä muunnetut virrat voidaan tallentaa tiedostoihin ja siirtää verkkoihin.

Huomaa : ObjectOutputStreamLuokka kirjoittaa vain ne objektit, jotka toteuttavat Serializablekäyttöliittymän. Tämä johtuu siitä, että objektit on sarjoitettava, kun ne kirjoitetaan streamiin

Luo ObjectOutputStream

Objektin lähtövirran luomiseksi meidän on java.io.ObjectOutputStreamensin tuotava paketti. Kun tuot paketin, voimme luoda tulosvirran seuraavasti.

 // Creates a FileOutputStream where objects from ObjectOutputStream are written FileOutputStream fileStream = new FileOutputStream(String file); // Creates the ObjectOutputStream ObjectOutputStream objStream = new ObjectOutputStream(fileStream); 

Yllä olevassa esimerkissä olemme luoneet objektin ulostulovirran nimeltä objStream, joka on linkitetty tiedoston ulostulovirtaan nimeltä fileStream.

ObjectOutputStreamin menetelmät

ObjectOutputStreamLuokka antaa toteutuksia eri menetelmiä esittää, että OutputStreamluokan.

write () -menetelmä

  • write() - kirjoittaa datatavun ulostulovirtaan
  • writeBoolean() - kirjoittaa tiedot loogisessa muodossa
  • writeChar() - kirjoittaa tiedot merkkimuodossa
  • writeInt() - kirjoittaa tiedot kokonaislukuna
  • writeObject() - kirjoittaa objektin ulostulovirtaan

Esimerkki 1: Java ObjectOutputStream

Katsotaanpa, miten voimme ObjectOutputStreamtallentaa objekteja tiedostoon ja ObjectInputStreamlukea nämä objektit tiedostoista

 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"); // Creates an ObjectOutputStream ObjectOutputStream output = new ObjectOutputStream(file); // writes objects to output stream output.writeInt(data1); output.writeObject(data2); // Reads data using the ObjectInputStream FileInputStream fileStream = new FileInputStream("file.txt"); ObjectInputStream objStream = new ObjectInputStream(fileStream); System.out.println("Integer data :" + objStream.readInt()); 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()menetelmää ja readObject()menetelmää kokonaisluku- ja objektidatan lukemiseen tiedostoista.

Tässä olemme ObjectOutputStreamkirjoittaneet tietoja tiedostoon. Luemme sitten tiedot tiedostosta ObjectInputStream.

Esimerkki 2: Java ObjectOutputStream

Otetaan toinen 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 dog1 = new Dog("Tyson", "Labrador"); try ( FileOutputStream fileOut = new FileOutputStream("file.txt"); // Creates an ObjectOutputStream ObjectOutputStream objOut = new ObjectOutputStream(fileOut); // Writes objects to the output stream objOut.writeObject(dog1); // Reads the object FileInputStream fileIn = new FileInputStream("file.txt"); ObjectInputStream objIn = new ObjectInputStream(fileIn); // Reads the objects Dog newDog = (Dog) objIn.readObject(); System.out.println("Dog Name: " + newDog.name); System.out.println("Dog Breed: " + newDog.breed); objOut.close(); objIn.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) ) 

Tuotos

 Koiran nimi: Tyson-koirarotu: Labrador 

Yllä olevassa esimerkissä olemme luoneet

  • ObjectOutputStreamnimetty objOut käyttämällä FileOutputStreamnimettyä fileOut
  • ObjectInputStreamnimetty objIn käyttämällä FileInputStreamnimettyä tiedostoaIn.
  • Koira-luokan objektikoira1.

Tässä olemme sitten kirjoittaneet objektin tiedostoon objektin ulostulovirralla. Ja objektin syötevirta objektin lukemiseksi tiedostosta.

Huomaa : Koiraluokka toteuttaa Serializablekäyttöliittymän. Tämä johtuu siitä, että ObjectOutputStreamainoat kirjoitusobjektit, jotka voidaan sarjoittaa lähtövirtaan.

Muut ObjectOutputStream-menetelmät

Menetelmät Kuvaukset
flush() tyhjentää kaikki tiedot lähtövirrasta
drain() laittaa kaikki puskuroidut tiedot lähtövirtaan
close() sulkee lähtövirran

Lisätietoja on Java ObjectOutputStream -sivustossa (virallinen Java-dokumentaatio).

Mielenkiintoisia artikkeleita...