„Java ObjectInputStream“ (su pavyzdžiais)

Šioje pamokoje pavyzdžių pagalba sužinosime apie „Java ObjectOutputStream“ ir jos metodus.

ObjectInputStreamKlasės java.iopakuotėje gali būti naudojamas skaityti objektus, kurie anksčiau buvo parašyta ObjectOutputStream.

Tai pratęsia InputStreamabstrakčią klasę.

Prieš sužinodami apie ObjectInputStreamklasę, įsitikinkite, kad žinote apie „ObjectOutputStream“ klasę.

„ObjectInputStream“ darbas

ObjectInputStreamDaugiausia naudojamas skaityti duomenis parašyta ObjectOutputStream.

Iš esmės „ ObjectOutputStreamJava“ objektus paverčia atitinkamais srautais. Tai vadinama serializavimu. Tie konvertuoti srautai gali būti saugomi failuose arba perduodami per tinklus.

Dabar, jei mums reikės skaityti tuos objektus, mes naudosime tą ObjectInputStream, kuris konvertuos srautus atgal į atitinkamus objektus. Tai vadinama deserializacija.

Sukurkite „ObjectInputStream“

Norėdami sukurti objekto įvesties srautą, pirmiausia turime importuoti java.io.ObjectInputStreampaketą. Importavę paketą, galime sukurti įvesties srautą.

 // 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); 

Ankstesniame pavyzdyje mes sukūrėme objekto įvesties srautą pavadinimu objStream, kuris yra susietas su failo įvesties srautu pavadinimu fileStream.

Dabar objStreamjį galima naudoti objektams nuskaityti iš failo.

„ObjectInputStream“ metodai

ObjectInputStreamKlasė suteikia realizacijos įvairių metodų pristatyti į InputStreamklasę.

skaityti () metodas

  • read() - nuskaito duomenų baitą iš įvesties srauto
  • readBoolean() - skaito duomenis logine forma
  • readChar() - skaito duomenis simbolių pavidalu
  • readInt() - skaito duomenis sveiko skaičiaus pavidalu
  • readObject() - nuskaito objektą iš įvesties srauto

1 pavyzdys: „Java ObjectInputStream“

Pažiūrėkime, kaip mes galime naudoti ObjectInputStreamklasę skaityti klasės parašytus objektus ObjectOutputStream.

 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(); ) ) ) 

Rezultatas

 Sveiki skaičiai: 5 eilutės duomenys: tai programiz 

Ankstesniame pavyzdyje mes naudojome readInt()ir readObject()metodą sveikiems skaičiams ir objektų duomenims nuskaityti iš failo.

Čia mes naudojome ObjectOutputStreamįrašydami duomenis į failą. Tada mes perskaitėme duomenis iš failo naudodami ObjectInputStream.

2 pavyzdys: „Java ObjectInputStream“

Pažiūrėkime dar vieną praktinį pavyzdį,

 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(); ) ) ) 

Rezultatas

 Šuns vardas: Tysono šunų veislė: labradoras 

Ankstesniame pavyzdyje mes sukūrėme

  • ObjectOutputStreampavadinta išvestis naudojant FileOutputStreampavadintą failą
  • ObjectInputStreampavadintas įvestis naudojant FileInputStreampavadintą fileStream
  • Objektinis šunų klasės šuo

Tada mes naudojome objekto išvesties srautą, kad įrašytume objektą į failą. Objekto įvesties srautas, skirtas objektui nuskaityti iš failo.

Pastaba : šunų klasė įgyvendina Serializablesąsają. Taip yra todėl, kad ObjectOutputStreamvienintelis serijinius objektus įrašo į išvesties srautą.

Kiti ObjectInputStream metodai

Metodai Aprašymai
available() grąžina galimą baitų skaičių įvesties sraute
mark() žymi įvesties srauto vietą, iki kurios duomenys buvo perskaityti
reset() grąžina valdiklį į tašką įvesties sraute, kuriame buvo nustatytas ženklas
skipBytes() praleidžia ir atmeta nurodytus baitus iš įvesties srauto
close() uždaro objekto įvesties srautą

Norėdami sužinoti daugiau, apsilankykite „Java ObjectInputStream“ (oficiali „Java“ dokumentacija).

Įdomios straipsniai...