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 tokareadBoolean()- čita podatke u logičkom oblikureadChar()- čita podatke u obliku znakareadInt()- čita podatke u cjelobrojnom oblikureadObject()- č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ćuFileOutputStreamimenovane datotekeObjectInputStreamimenovani ulaz koristećiFileInputStreamimenovani 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).








