Java ObjectInputStream (s primeri)

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 toka
  • readBoolean() - bere podatke v logični obliki
  • readChar() - bere podatke v obliki znakov
  • readInt() - bere podatke v celoštevilčni obliki
  • readObject() - 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 uporabo FileOutputStreampoimenovane datoteke
  • ObjectInputStreamimenovani vnos z uporabo FileInputStreamimenovanega 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).

Zanimive Članki...