Java ObjectOutputStream (met voorbeelden)

In deze tutorial zullen we met behulp van voorbeelden leren over Java ObjectOutputStream en de methoden ervan.

De ObjectOutputStreamklasse van het java.iopakket kan worden gebruikt om objecten te schrijven die kunnen worden gelezen door ObjectInputStream.

Het breidt de OutputStreamabstracte klasse uit.

Werking van ObjectOutputStream

In feite ObjectOutputStreamcodeert het Java-objecten met behulp van de klassenaam en objectwaarden. En genereert dus overeenkomstige streams. Dit proces staat bekend als serialisatie.

Die geconverteerde streams kunnen worden opgeslagen in bestanden en kunnen worden overgedragen tussen netwerken.

Opmerking : de ObjectOutputStreamklasse schrijft alleen die objecten die de Serializableinterface implementeren . Dit komt doordat objecten moeten worden geserialiseerd tijdens het schrijven naar de stream

Maak een ObjectOutputStream

Om een ​​objectuitvoerstroom te maken, moeten we het java.io.ObjectOutputStreampakket eerst importeren . Zodra we het pakket hebben geïmporteerd, kunnen we als volgt een uitvoerstroom maken.

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

In het bovenstaande voorbeeld hebben we een objectuitvoerstroom met de naam objStream gemaakt die is gekoppeld aan de bestandsuitvoerstroom met de naam fileStream.

Methoden van ObjectOutputStream

De ObjectOutputStreamklasse biedt implementaties voor verschillende methoden die in de OutputStreamklasse aanwezig zijn.

write () methode

  • write() - schrijft een byte aan gegevens naar de uitvoerstroom
  • writeBoolean() - schrijft gegevens in booleaanse vorm
  • writeChar() - schrijft gegevens in karaktervorm
  • writeInt() - schrijft gegevens in integer-vorm
  • writeObject() - schrijft object naar de outputstroom

Voorbeeld 1: Java ObjectOutputStream

Laten we eens kijken hoe we ObjectOutputStreamobjecten in een bestand kunnen opslaan en ObjectInputStreamdie objecten uit de bestanden kunnen lezen

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

Uitvoer

 Geheel getal data: 5 String data: Dit is programiz 

In het bovenstaande voorbeeld hebben we de readInt()methode en readObject()methode gebruikt om gegevens van een geheel getal en objectgegevens uit de bestanden te lezen.

Hier hebben we de gebruikt ObjectOutputStreamom gegevens naar het bestand te schrijven. Vervolgens lezen we de gegevens uit het bestand met behulp van de ObjectInputStream.

Voorbeeld 2: Java ObjectOutputStream

Laten we nog een voorbeeld nemen,

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

Uitvoer

 Hondennaam: Tyson Hondenras: Labrador 

In het bovenstaande voorbeeld hebben we gemaakt

  • ObjectOutputStreamgenaamd objOut met behulp van de FileOutputStreamgenoemde fileOut
  • ObjectInputStreamgenaamd objIn met behulp van de FileInputStreamgenoemde fileIn.
  • Een object dog1 van de klasse Dog.

Hier hebben we vervolgens de objectuitvoerstroom gebruikt om het object naar het bestand te schrijven. En de objectinvoerstroom om het object uit het bestand te lezen.

Opmerking : de klasse Dog implementeert de Serializableinterface. Het is omdat de ObjectOutputStreamenige objecten schrijft die kunnen worden geserialiseerd naar de uitvoerstroom.

Andere methoden van ObjectOutputStream

Methoden Beschrijvingen
flush() wist alle gegevens uit de uitvoerstroom
drain() plaatst alle gebufferde gegevens in de outputstroom
close() sluit de outputstroom

Ga voor meer informatie naar Java ObjectOutputStream (officiële Java-documentatie).

Interessante artikelen...