V tej vadnici bomo s pomočjo primerov spoznali Java ObjectOutputStream in njegove metode.
ObjectInputStreamRazred java.iopaket se lahko uporablja za branje predmete, ki so jih prej napisali ObjectOutputStream.
Razširja InputStreamabstraktni razred.

Preden se naučite o ObjectInputStreampredavanju, se prepričajte, da poznate razred ObjectOutputStream.
Delovanje ObjectInputStream
The ObjectInputStreamse uporablja predvsem za branje podatkov, ki jih je zapisal ObjectOutputStream.
V bistvu ObjectOutputStreampretvori predmete Java v ustrezne tokove. To je znano kot serializacija. Te pretvorjene tokove lahko shranite v datoteke ali prenesete prek omrežij.
Če bomo morali te predmete prebrati, bomo uporabili tisto, ObjectInputStreamki bo pretvorila tokove nazaj v ustrezne predmete. To je znano kot deserializacija.
Ustvarite ObjectInputStream
Če želimo ustvariti vhodni tok predmeta, moramo najprej uvoziti java.io.ObjectInputStreampaket. Ko uvozimo paket, je tukaj opisano, kako lahko ustvarimo vhodni tok.
// 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);
V zgornjem primeru smo ustvarili predmetni vhodni tok z imenom objStream, ki je povezan z vhodnim tokom datoteke z imenom fileStream.
Zdaj se objStreamlahko uporablja za branje predmetov iz datoteke.
Metode ObjectInputStream
ObjectInputStreamRazred določa izvedb različnih metod predstaviti v InputStreamrazredu.
metoda read ()
read()- bere bajt podatkov iz vhodnega tokareadBoolean()- bere podatke v logični oblikireadChar()- bere podatke v obliki znakovreadInt()- bere podatke v celoštevilčni oblikireadObject()- bere objekt iz vhodnega toka
Primer 1: Java ObjectInputStream
Poglejmo, kako lahko uporabimo ObjectInputStreamrazred za branje predmetov, ki jih je napisal ObjectOutputStreamrazred.
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(); ) ) )
Izhod
Celoštevilni podatki: 5 Nizni podatki: To je programiz
V zgornjem primeru smo uporabili metodo readInt()in readObject()za branje celoštevilčnih podatkov in podatkov o objektih iz datoteke.
Tu smo uporabili ObjectOutputStreamza zapis podatkov v datoteko. Nato podatke iz datoteke preberemo s pomočjo ObjectInputStream.
Primer 2: Java ObjectInputStream
Poglejmo še en praktičen primer,
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(); ) ) )
Izhod
Ime psa: pasma psa Tyson: labrador
V zgornjem primeru smo ustvarili
ObjectOutputStreamimenovani izhod z uporaboFileOutputStreampoimenovane datotekeObjectInputStreamimenovani vnos z uporaboFileInputStreamimenovanega fileStream- Predmetni pes iz razreda psov
Tu smo nato uporabili izhodni tok predmeta za zapis predmeta v datoteko. In vhodni tok predmeta za branje predmeta iz datoteke.
Opomba : Razred Dog izvaja Serializablevmesnik. To je zato, ker ObjectOutputStreamedini zapisuje predmete, ki jih je mogoče serirati, v izhodni tok.
Druge metode ObjectInputStream
| Metode | Opisi |
|---|---|
available() | vrne razpoložljivo število bajtov v vhodnem toku |
mark() | označuje položaj v vhodnem toku, do katerega so bili prebrani podatki |
reset() | vrne kontrolnik na točko v vhodnem toku, kjer je bila nastavljena oznaka |
skipBytes() | preskoči in zavrže določene bajte iz vhodnega toka |
close() | zapre vhodni tok predmeta |
Če želite izvedeti več, obiščite Java ObjectInputStream (uradna dokumentacija Java).








