Java ObjectOutputStream (z przykładami)

W tym samouczku za pomocą przykładów nauczymy się języka Java ObjectOutputStream i jego metod.

ObjectOutputStreamKlasa java.iopakietu może być używany do zapisywania obiektów, które mogą być odczytane przez ObjectInputStream.

Rozszerza OutputStreamklasę abstrakcyjną.

Działanie ObjectOutputStream

Zasadniczo ObjectOutputStreamkoduje obiekty Java przy użyciu nazwy klasy i wartości obiektu. A zatem generuje odpowiednie strumienie. Ten proces jest nazywany serializacją.

Te przekonwertowane strumienie mogą być przechowywane w plikach i mogą być przesyłane między sieciami.

Uwaga : ObjectOutputStreamKlasa zapisuje tylko te obiekty, które implementują Serializableinterfejs. Dzieje się tak, ponieważ obiekty muszą być serializowane podczas zapisywania w strumieniu

Utwórz ObjectOutputStream

Aby utworzyć strumień wyjściowy obiektu, musimy najpierw zaimportować java.io.ObjectOutputStreampakiet. Po zaimportowaniu pakietu, oto jak możemy stworzyć strumień wyjściowy.

 // Creates a FileOutputStream where objects from ObjectOutputStream are written FileOutputStream fileStream = new FileOutputStream(String file); // Creates the ObjectOutputStream ObjectOutputStream objStream = new ObjectOutputStream(fileStream); 

W powyższym przykładzie utworzyliśmy strumień wyjściowy obiektu o nazwie objStream, który jest powiązany ze strumieniem wyjściowym pliku o nazwie fileStream.

Metody ObjectOutputStream

ObjectOutputStreamKlasa zawiera implementacje dla różnych sposobów przedstawienia w OutputStreamklasie.

write () Metoda

  • write() - zapisuje bajt danych do strumienia wyjściowego
  • writeBoolean() - zapisuje dane w formie logicznej
  • writeChar() - zapisuje dane w postaci znaków
  • writeInt() - zapisuje dane w postaci liczb całkowitych
  • writeObject() - zapisuje obiekt do strumienia wyjściowego

Przykład 1: Java ObjectOutputStream

Zobaczmy, jak możemy użyć ObjectOutputStreamdo przechowywania obiektów w pliku i ObjectInputStreamdo odczytywania tych obiektów z plików

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

Wynik

 Dane całkowite: 5 Dane łańcuchowe: To jest programiz 

W powyższym przykładzie użyliśmy readInt()metody i readObject()metody do odczytania danych całkowitych i danych opisowych z plików.

Tutaj użyliśmy ObjectOutputStreamdo zapisania danych do pliku. Następnie odczytujemy dane z pliku za pomocą rozszerzenia ObjectInputStream.

Przykład 2: Java ObjectOutputStream

Weźmy inny przykład,

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

Wynik

 Imię psa: Tyson Dog Breed: Labrador 

W powyższym przykładzie utworzyliśmy

  • ObjectOutputStreamo nazwie objOut przy użyciu FileOutputStreamnazwanego fileOut
  • ObjectInputStreamnazwany objIn przy użyciu FileInputStreamnazwanego fileIn.
  • Obiekt dog1 z klasy Dog.

Tutaj użyliśmy strumienia wyjściowego obiektu do zapisania obiektu do pliku. I strumień wejściowy obiektu do odczytu obiektu z pliku.

Uwaga : klasa Dog implementuje Serializableinterfejs. Dzieje się tak, ponieważ ObjectOutputStreamjedyne zapisuje obiekty, które można serializować do strumienia wyjściowego.

Inne metody ObjectOutputStream

Metody Opisy
flush() czyści wszystkie dane ze strumienia wyjściowego
drain() umieszcza wszystkie zbuforowane dane w strumieniu wyjściowym
close() zamyka strumień wyjściowy

Aby dowiedzieć się więcej, odwiedź stronę Java ObjectOutputStream (oficjalna dokumentacja Java).

Interesujące artykuły...