Tässä opetusohjelmassa opitaan Java ObjectOutputStreamista ja sen menetelmistä esimerkkien avulla.
ObjectOutputStream
Luokan java.io
paketti voidaan käyttää kirjoittamaan esineitä, jotka voidaan lukea ObjectInputStream
.
Se laajentaa OutputStream
abstraktia luokkaa.
ObjectOutputStreamin toiminta
Pohjimmiltaan ObjectOutputStream
koodaa 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 : ObjectOutputStream
Luokka kirjoittaa vain ne objektit, jotka toteuttavat Serializable
kä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.ObjectOutputStream
ensin 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
ObjectOutputStream
Luokka antaa toteutuksia eri menetelmiä esittää, että OutputStream
luokan.
write () -menetelmä
write()
- kirjoittaa datatavun ulostulovirtaanwriteBoolean()
- kirjoittaa tiedot loogisessa muodossawriteChar()
- kirjoittaa tiedot merkkimuodossawriteInt()
- kirjoittaa tiedot kokonaislukunawriteObject()
- kirjoittaa objektin ulostulovirtaan
Esimerkki 1: Java ObjectOutputStream
Katsotaanpa, miten voimme ObjectOutputStream
tallentaa objekteja tiedostoon ja ObjectInputStream
lukea 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 ObjectOutputStream
kirjoittaneet 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
ObjectOutputStream
nimetty objOut käyttämälläFileOutputStream
nimettyä fileOutObjectInputStream
nimetty objIn käyttämälläFileInputStream
nimettyä tiedostoaIn.- Koira-luokan objektikoira1.
Tässä olemme sitten kirjoittaneet objektin tiedostoon objektin ulostulovirralla. Ja objektin syötevirta objektin lukemiseksi tiedostosta.
Huomaa : Koiraluokka toteuttaa Serializable
käyttöliittymän. Tämä johtuu siitä, että ObjectOutputStream
ainoat 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).