U ovom uputstvu uz primjere ćemo naučiti o Javi ObjectOutputStream i njegovim metodama.
ObjectInputStream
Razred java.io
paket može se koristiti za čitanje predmete koje su prethodno napisao ObjectOutputStream
.
Proširuje InputStream
apstraktnu klasu.
Prije nego što naučite o ObjectInputStream
klasi, provjerite jeste li znali za klasu ObjectOutputStream.
Rad ObjectInputStream
The ObjectInputStream
se uglavnom koristi za čitanje podataka koje je napisao ObjectOutputStream
.
U osnovi ObjectOutputStream
pretvara 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 ObjectInputStream
koji ć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.ObjectInputStream
paket. 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 objStream
može koristiti za čitanje objekata iz datoteke.
Metode ObjectInputStream
ObjectInputStream
Klasa pruža implementacije različitih metoda prezentirati u InputStream
razredu.
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 ObjectInputStream
klasu možemo koristiti za čitanje objekata koje je napisala ObjectOutputStream
klasa.
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 ObjectOutputStream
za 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
ObjectOutputStream
imenovani izlaz pomoćuFileOutputStream
imenovane datotekeObjectInputStream
imenovani ulaz koristećiFileInputStream
imenovani 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 Serializable
sučelje. To je zato što ObjectOutputStream
jedini 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).