Java ObjectInputStream (cu exemple)

În acest tutorial, vom afla despre Java ObjectOutputStream și metodele sale cu ajutorul unor exemple.

ObjectInputStreamClasa a java.iopachetului poate fi folosit pentru a citi obiecte care au fost scrise anterior de ObjectOutputStream.

Extinde InputStreamclasa abstractă.

Înainte de a afla despre ObjectInputStreamclasă, asigurați-vă că știți despre Clasa ObjectOutputStream.

Funcționarea ObjectInputStream

Este ObjectInputStreamutilizat în principal pentru a citi datele scrise de ObjectOutputStream.

Practic, ObjectOutputStreamconvertește obiectele Java în fluxuri corespunzătoare. Aceasta este cunoscută sub numele de serializare. Aceste fluxuri convertite pot fi stocate în fișiere sau transferate prin rețele.

Acum, dacă trebuie să citim acele obiecte, vom folosi ObjectInputStreamacelea care vor converti fluxurile înapoi în obiecte corespunzătoare. Aceasta este cunoscută sub numele de deserializare.

Creați un ObjectInputStream

Pentru a crea un flux de intrare a obiectelor, trebuie mai java.io.ObjectInputStreamîntâi să importăm pachetul. Odată ce am importat pachetul, iată cum putem crea un flux de intrare.

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

În exemplul de mai sus, am creat un flux de intrare a obiectului numit objStream care este legat de fluxul de intrare a fișierului numit fileStream.

Acum, objStreampoate fi folosit pentru a citi obiecte din fișier.

Metode de ObjectInputStream

ObjectInputStreamClasa ofera implementari ale diferitelor metode prezintă în InputStreamclasă.

read () Metodă

  • read() - citește un octet de date din fluxul de intrare
  • readBoolean() - citește datele în formă booleană
  • readChar() - citește datele sub formă de caractere
  • readInt() - citește datele în formă întreagă
  • readObject() - citește obiectul din fluxul de intrare

Exemplul 1: Java ObjectInputStream

Să vedem cum putem folosi ObjectInputStreamclasa pentru a citi obiecte scrise de ObjectOutputStreamclasă.

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

Ieșire

 Date întregi: 5 șiruri de date: Acesta este programat 

În exemplul de mai sus, am folosit metoda readInt()și readObject()pentru a citi date întregi și date obiect din fișier.

Aici, am folosit ObjectOutputStreampentru a scrie date în fișier. Apoi citim datele din fișier folosind ObjectInputStream.

Exemplul 2: Java ObjectInputStream

Să vedem un alt exemplu practic,

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

Ieșire

 Numele câinelui: Rasa de câine Tyson: Labrador 

În exemplul de mai sus, am creat

  • ObjectOutputStreamieșire denumită folosind FileOutputStreamfișierul numit
  • ObjectInputStreaminput numit folosind FileInputStreamfileStream numit
  • Un câine obiect din clasa Dog

Aici, am folosit apoi fluxul de ieșire al obiectului pentru a scrie obiectul în fișier. Și, fluxul de intrare a obiectului pentru a citi obiectul din fișier.

Notă : Clasa Dog implementează Serializableinterfața. Acest lucru se datorează faptului că ObjectOutputStreamsingurul scrie obiectele serializabile în fluxul de ieșire.

Alte metode ale ObjectInputStream

Metode Descrieri
available() returnează numărul disponibil de octeți din fluxul de intrare
mark() marchează poziția în fluxul de intrare până la care au fost citite datele
reset() returnează controlul la punctul din fluxul de intrare unde a fost setată marca
skipBytes() omite și aruncă octeții specificați din fluxul de intrare
close() închide fluxul de intrare a obiectului

Pentru a afla mai multe, vizitați Java ObjectInputStream (documentație oficială Java).

Articole interesante...