W tym samouczku za pomocą przykładów nauczymy się języka Java ObjectOutputStream i jego metod.
ObjectOutputStream
Klasa java.io
pakietu może być używany do zapisywania obiektów, które mogą być odczytane przez ObjectInputStream
.
Rozszerza OutputStream
klasę abstrakcyjną.
Działanie ObjectOutputStream
Zasadniczo ObjectOutputStream
koduje 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 : ObjectOutputStream
Klasa zapisuje tylko te obiekty, które implementują Serializable
interfejs. 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.ObjectOutputStream
pakiet. 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
ObjectOutputStream
Klasa zawiera implementacje dla różnych sposobów przedstawienia w OutputStream
klasie.
write () Metoda
write()
- zapisuje bajt danych do strumienia wyjściowegowriteBoolean()
- zapisuje dane w formie logicznejwriteChar()
- zapisuje dane w postaci znakówwriteInt()
- zapisuje dane w postaci liczb całkowitychwriteObject()
- zapisuje obiekt do strumienia wyjściowego
Przykład 1: Java ObjectOutputStream
Zobaczmy, jak możemy użyć ObjectOutputStream
do przechowywania obiektów w pliku i ObjectInputStream
do 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 ObjectOutputStream
do 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
ObjectOutputStream
o nazwie objOut przy użyciuFileOutputStream
nazwanego fileOutObjectInputStream
nazwany objIn przy użyciuFileInputStream
nazwanego 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 Serializable
interfejs. Dzieje się tak, ponieważ ObjectOutputStream
jedyne 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).