Java ObjectInputStream (s primjerima)

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

ObjectInputStreamRazred java.iopaket može se koristiti za čitanje predmete koje su prethodno napisao ObjectOutputStream.

Proširuje InputStreamapstraktnu klasu.

Prije nego što naučite o ObjectInputStreamklasi, provjerite jeste li znali za klasu ObjectOutputStream.

Rad ObjectInputStream

The ObjectInputStreamse uglavnom koristi za čitanje podataka koje je napisao ObjectOutputStream.

U osnovi ObjectOutputStreampretvara Java objekte u odgovarajuće tokove. To je poznato kao serializacija. Ti pretvoreni tokovi mogu se pohraniti u datoteke ili prenijeti putem mreža.

Sada, ako trebamo pročitati te objekte, upotrijebit ćemo onaj ObjectInputStreamkoji će pretvoriti tokove natrag u odgovarajuće objekte. To je poznato kao deserializacija.

Stvorite ObjectInputStream

Da bismo stvorili ulazni tok objekta, prvo moramo uvesti java.io.ObjectInputStreampaket. Nakon što uvozimo paket, evo kako možemo stvoriti ulazni tok.

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

U gornjem primjeru stvorili smo ulazni tok objekta nazvan objStream koji je povezan s ulaznim tokom datoteke nazvanim fileStream.

Sada se objStreammože koristiti za čitanje objekata iz datoteke.

Metode ObjectInputStream

ObjectInputStreamKlasa pruža implementacije različitih metoda prezentirati u InputStreamrazredu.

read () metoda

  • read() - čita bajt podataka iz ulaznog toka
  • readBoolean() - čita podatke u logičkom obliku
  • readChar() - čita podatke u obliku znaka
  • readInt() - čita podatke u cjelobrojnom obliku
  • readObject() - čita objekt iz ulaznog toka

Primjer 1: Java ObjectInputStream

Pogledajmo kako ObjectInputStreamklasu možemo koristiti za čitanje objekata koje je napisala ObjectOutputStreamklasa.

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

Izlaz

 Cjelobrojni podaci: 5 Podaci o nizu: Ovo je programirano 

U gore navedenom primjeru, mi smo koristili readInt()i readObject()metodom pročitati cijeli broj podataka i objektnih podataka iz datoteke.

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

Primjer 2: Java ObjectInputStream

Pogledajmo još jedan praktični 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 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(); ) ) ) 

Izlaz

 Ime psa: Tyson Pasmina pasa: labrador 

U gornjem primjeru smo stvorili

  • ObjectOutputStreamimenovani izlaz pomoću FileOutputStreamimenovane datoteke
  • ObjectInputStreamimenovani ulaz koristeći FileInputStreamimenovani fileStream
  • Predmet pas klase Pas

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 zapisuje serijske objekte u izlazni tok.

Ostale metode ObjectInputStream

Metode Opisi
available() vraća raspoloživi broj bajtova u ulaznom toku
mark() označava položaj u ulaznom toku do kojeg su podaci pročitani
reset() vraća kontrolu na točku u ulaznom toku gdje je postavljena oznaka
skipBytes() preskače i odbacuje navedene bajtove iz ulaznog toka
close() zatvara ulazni tok objekta

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

Zanimljivi članci...