Java ObjectOutputStream (с примери)

В този урок ще научим за Java ObjectOutputStream и неговите методи с помощта на примери.

В ObjectOutputStreamкласа на java.ioпакета може да се използва за да напишете предмети, които могат да бъдат прочетени от ObjectInputStream.

Той разширява OutputStreamабстрактния клас.

Работа на ObjectOutputStream

По принцип ObjectOutputStreamкодира Java обекти, като използва името на класа и стойностите на обекта. И, следователно, генерира съответните потоци. Този процес е известен като сериализация.

Тези преобразувани потоци могат да се съхраняват във файлове и могат да се прехвърлят между мрежите.

Забележка : ObjectOutputStreamКласът записва само тези обекти, които реализират Serializableинтерфейса. Това е така, защото обектите трябва да бъдат сериализирани, докато пишат в потока

Създайте ObjectOutputStream

За да създадем обектен изходен поток, първо трябва да импортираме java.io.ObjectOutputStreamпакета. След като импортираме пакета, ето как можем да създадем изходен поток.

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

В горния пример създадохме обектен изходен поток, наречен objStream, който е свързан с изходния поток на файла, наречен fileStream.

Методи на ObjectOutputStream

В ObjectOutputStreamклас осигурява приложения за различни методи представят в OutputStreamклас.

метод write ()

  • write() - записва байт данни в изходния поток
  • writeBoolean() - записва данни в логическа форма
  • writeChar() - записва данни във вид на символи
  • writeInt() - записва данни в цяло число
  • writeObject() - записва обект в изходния поток

Пример 1: Java ObjectOutputStream

Нека видим как можем да използваме ObjectOutputStreamза съхраняване на обекти във файл и ObjectInputStreamза четене на тези обекти от файловете

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

Изход

 Целочислени данни: 5 Данни за низове: Това е програма 

В горния пример използвахме readInt()метода и readObject()метода за четене на целочислени данни и обектни данни от файловете.

Тук използвахме, за ObjectOutputStreamда запишем данни във файла. След това четем данните от файла с помощта на ObjectInputStream.

Пример 2: Java ObjectOutputStream

Нека вземем друг пример,

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

Изход

 Име на куче: Порода кучета Тайсън: лабрадор 

В горния пример ние създадохме

  • ObjectOutputStreamс име на objOut с помощта на FileOutputStreamнаименования файлOut
  • ObjectInputStreamс име на objIn, използвайки FileInputStreamнаименования файлIn.
  • Обект dog1 от клас Dog.

След това използвахме изходния поток на обекта, за да запишем обекта във файла. И входният поток на обекта за четене на обекта от файла.

Забележка : Класът Dog изпълнява Serializableинтерфейса. Това е така, защото ObjectOutputStreamединствените обекти, които могат да бъдат сериализирани в изходния поток.

Други методи на ObjectOutputStream

Методи Описания
flush() изчиства всички данни от изходния поток
drain() поставя всички буферирани данни в изходния поток
close() затваря изходния поток

За да научите повече, посетете Java ObjectOutputStream (официална документация за Java).

Интересни статии...