Šioje pamokoje pavyzdžių pagalba sužinosime apie „Java ObjectOutputStream“ ir jos metodus.
ObjectInputStream
Klasės java.io
pakuotėje gali būti naudojamas skaityti objektus, kurie anksčiau buvo parašyta ObjectOutputStream
.
Tai pratęsia InputStream
abstrakčią klasę.
Prieš sužinodami apie ObjectInputStream
klasę, įsitikinkite, kad žinote apie „ObjectOutputStream“ klasę.
„ObjectInputStream“ darbas
ObjectInputStream
Daugiausia naudojamas skaityti duomenis parašyta ObjectOutputStream
.
Iš esmės „ ObjectOutputStream
Java“ 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.ObjectInputStream
paketą. 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 objStream
jį galima naudoti objektams nuskaityti iš failo.
„ObjectInputStream“ metodai
ObjectInputStream
Klasė suteikia realizacijos įvairių metodų pristatyti į InputStream
klasę.
skaityti () metodas
read()
- nuskaito duomenų baitą iš įvesties srautoreadBoolean()
- skaito duomenis logine formareadChar()
- skaito duomenis simbolių pavidalureadInt()
- skaito duomenis sveiko skaičiaus pavidalureadObject()
- nuskaito objektą iš įvesties srauto
1 pavyzdys: „Java ObjectInputStream“
Pažiūrėkime, kaip mes galime naudoti ObjectInputStream
klasę 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
ObjectOutputStream
pavadinta išvestis naudojantFileOutputStream
pavadintą failąObjectInputStream
pavadintas įvestis naudojantFileInputStream
pavadintą 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 Serializable
sąsają. Taip yra todėl, kad ObjectOutputStream
vienintelis 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).