V tej vadnici bomo s pomočjo primerov spoznali Java ObjectOutputStream in njegove metode.
ObjectInputStream
Razred java.io
paket se lahko uporablja za branje predmete, ki so jih prej napisali ObjectOutputStream
.
Razširja InputStream
abstraktni razred.
Preden se naučite o ObjectInputStream
predavanju, se prepričajte, da poznate razred ObjectOutputStream.
Delovanje ObjectInputStream
The ObjectInputStream
se uporablja predvsem za branje podatkov, ki jih je zapisal ObjectOutputStream
.
V bistvu ObjectOutputStream
pretvori 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, ObjectInputStream
ki 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.ObjectInputStream
paket. 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 objStream
lahko uporablja za branje predmetov iz datoteke.
Metode ObjectInputStream
ObjectInputStream
Razred določa izvedb različnih metod predstaviti v InputStream
razredu.
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 ObjectInputStream
razred za branje predmetov, ki jih je napisal ObjectOutputStream
razred.
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 ObjectOutputStream
za 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
ObjectOutputStream
imenovani izhod z uporaboFileOutputStream
poimenovane datotekeObjectInputStream
imenovani vnos z uporaboFileInputStream
imenovanega 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 Serializable
vmesnik. To je zato, ker ObjectOutputStream
edini 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).