Java ObjectOutputStream (s primjerima)

U ovom uputstvu uz primjere ćemo naučiti o Javi ObjectOutputStream i njegovim metodama.

ObjectOutputStreamRazred java.iopaket se može koristiti za pisanje predmete koji se mogu čitati ObjectInputStream.

Proširuje OutputStreamapstraktnu klasu.

Rad ObjectOutputStream

U osnovi, ObjectOutputStreamkodira Java objekte koristeći ime klase i vrijednosti objekta. I, prema tome, generira odgovarajuće tokove. Taj je postupak poznat pod nazivom serializacija.

Ti pretvoreni tokovi mogu se pohraniti u datoteke i mogu se prenijeti između mreža.

Napomena : ObjectOutputStreamKlasa zapisuje samo one objekte koji implementiraju Serializablesučelje. To je zato što se objekti moraju serializirati dok zapisuju u stream

Stvorite ObjectOutputStream

Da bismo stvorili objektni izlazni tok, prvo moramo uvesti java.io.ObjectOutputStreampaket. Nakon što uvozimo paket, evo kako možemo stvoriti izlazni tok.

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

U gornjem primjeru stvorili smo objektni izlazni tok naziva objStream koji je povezan s izlaznim tokom datoteke nazvanim fileStream.

Metode ObjectOutputStream

ObjectOutputStreamKlasa pruža implementacije za različite metode prezentirati u OutputStreamrazredu.

metoda write ()

  • write() - zapisuje bajt podataka u izlazni tok
  • writeBoolean() - zapisuje podatke u logičkom obliku
  • writeChar() - zapisuje podatke u obliku znaka
  • writeInt() - zapisuje podatke u cjelobrojni oblik
  • writeObject() - zapisuje objekt u izlazni tok

Primjer 1: Java ObjectOutputStream

Pogledajmo kako možemo koristiti ObjectOutputStreamza pohranu objekata u datoteku i ObjectInputStreamza čitanje tih objekata iz datoteka

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

Izlaz

 Cjelobrojni podaci: 5 Podaci o nizu: Ovo je programirano 

U gornjem primjeru koristili smo readInt()metodu i readObject()metodu za čitanje cjelobrojnih podataka i podataka o objektima iz datoteka.

Ovdje smo koristili ObjectOutputStreamza upisivanje podataka u datoteku. Zatim podatke iz datoteke čitamo pomoću datoteke ObjectInputStream.

Primjer 2: Java ObjectOutputStream

Uzmimo još jedan primjer,

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

Izlaz

 Ime psa: Tyson Pasmina pasa: labrador 

U gornjem primjeru smo stvorili

  • ObjectOutputStreampod nazivom objOut koristeći FileOutputStreamimenovani fileOut
  • ObjectInputStreampod nazivom objIn pomoću FileInputStreamimenovane datotekeIn.
  • Predmet dog1 klase Dog.

Ovdje smo tada koristili izlazni tok objekta za upisivanje objekta u datoteku. I, ulazni tok objekta za čitanje objekta iz datoteke.

Napomena : Klasa Dog implementira Serializablesučelje. To je zato što ObjectOutputStreamjedini upisuje objekte koji se mogu serializirati u izlazni tok.

Ostale metode ObjectOutputStream

Metode Opisi
flush() briše sve podatke iz izlaznog toka
drain() stavlja sve međuspremnike u izlazni tok
close() zatvara izlazni tok

Da biste saznali više, posjetite Java ObjectOutputStream (službena Java dokumentacija).

Zanimljivi članci...