Šioje pamokoje pavyzdžių pagalba sužinosime apie „Java ObjectOutputStream“ ir jos metodus.
ObjectOutputStream
Klasės java.io
pakuotėje gali būti naudojamas rašyti objektus, kurie gali būti perskaityti ObjectInputStream
.
Tai pratęsia OutputStream
abstrakčią klasę.
„ObjectOutputStream“ darbas
Iš esmės „ ObjectOutputStream
Java“ objektai užkoduojami naudojant klasės pavadinimą ir objekto reikšmes. Taigi, generuoja atitinkamus srautus. Šis procesas yra žinomas kaip serializavimas.
Šie konvertuoti srautai gali būti saugomi failuose ir gali būti perduodami tarp tinklų.
Pastaba : ObjectOutputStream
klasė rašo tik tuos objektus, kurie įgyvendina Serializable
sąsają. Taip yra todėl, kad rašant į srautą objektai turi būti serijiniai
Sukurkite „ObjectOutputStream“
Norėdami sukurti objekto išvesties srautą, pirmiausia turime importuoti java.io.ObjectOutputStream
paketą. Kai importuosime paketą, galime sukurti išvesties srautą.
// Creates a FileOutputStream where objects from ObjectOutputStream are written FileOutputStream fileStream = new FileOutputStream(String file); // Creates the ObjectOutputStream ObjectOutputStream objStream = new ObjectOutputStream(fileStream);
Ankstesniame pavyzdyje mes sukūrėme objekto išvesties srautą pavadinimu objStream, kuris yra susietas su failo išvesties srautu pavadinimu fileStream.
„ObjectOutputStream“ metodai
ObjectOutputStream
Klasė suteikia realizacijos įvairių metodų pristatyti į OutputStream
klasę.
rašyti () metodas
write()
- įrašo duomenų baitą į išvesties srautąwriteBoolean()
- rašo duomenis loginės formoswriteChar()
- rašo duomenis simbolių pavidaluwriteInt()
- rašo duomenis sveiko skaičiaus pavidaluwriteObject()
rašo objektą į išvesties srautą
1 pavyzdys: „Java ObjectOutputStream“
Pažiūrėkime, kaip galime naudoti ObjectOutputStream
objektus faile saugoti ir ObjectInputStream
tuos objektus nuskaityti iš failų
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"); // Creates an ObjectOutputStream ObjectOutputStream output = new ObjectOutputStream(file); // writes objects to output stream output.writeInt(data1); output.writeObject(data2); // Reads data using the ObjectInputStream FileInputStream fileStream = new FileInputStream("file.txt"); ObjectInputStream objStream = new ObjectInputStream(fileStream); System.out.println("Integer data :" + objStream.readInt()); 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
Pirmiau pateiktame pavyzdyje mes naudojome readInt()
metodą ir readObject()
metodą sveikiems skaičiams ir objektų duomenims nuskaityti iš failų.
Čia mes naudojome ObjectOutputStream
įrašydami duomenis į failą. Tada mes perskaitėme duomenis iš failo naudodami ObjectInputStream
.
2 pavyzdys: „Java ObjectOutputStream“
Paimkime kitą 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 dog1 = new Dog("Tyson", "Labrador"); try ( FileOutputStream fileOut = new FileOutputStream("file.txt"); // Creates an ObjectOutputStream ObjectOutputStream objOut = new ObjectOutputStream(fileOut); // Writes objects to the output stream objOut.writeObject(dog1); // Reads the object FileInputStream fileIn = new FileInputStream("file.txt"); ObjectInputStream objIn = new ObjectInputStream(fileIn); // Reads the objects Dog newDog = (Dog) objIn.readObject(); System.out.println("Dog Name: " + newDog.name); System.out.println("Dog Breed: " + newDog.breed); objOut.close(); objIn.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) )
Rezultatas
Šuns vardas: Tysono šunų veislė: labradoras
Ankstesniame pavyzdyje mes sukūrėme
ObjectOutputStream
pavadintas objOut naudojantFileOutputStream
pavadintą fileOutObjectInputStream
pavadintas objIn naudojantFileInputStream
pavadintą fileIn.- Objektinis šuo1 iš Šuns klasės.
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
vieninteliai rašomieji objektai gali būti nuosekliai susieti su išvesties srautu.
Kiti „ObjectOutputStream“ metodai
Metodai | Aprašymai |
---|---|
flush() | išvalo visus duomenis iš išvesties srauto |
drain() | visus buferinius duomenis įdeda į išvesties srautą |
close() | uždaro išvesties srautą |
Norėdami sužinoti daugiau, apsilankykite „Java ObjectOutputStream“ (oficiali „Java“ dokumentacija).