In deze tutorial zullen we met behulp van voorbeelden leren over Java ObjectOutputStream en de methoden ervan.
De ObjectOutputStream
klasse van het java.io
pakket kan worden gebruikt om objecten te schrijven die kunnen worden gelezen door ObjectInputStream
.
Het breidt de OutputStream
abstracte klasse uit.
Werking van ObjectOutputStream
In feite ObjectOutputStream
codeert 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 ObjectOutputStream
klasse schrijft alleen die objecten die de Serializable
interface 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.ObjectOutputStream
pakket 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 ObjectOutputStream
klasse biedt implementaties voor verschillende methoden die in de OutputStream
klasse aanwezig zijn.
write () methode
write()
- schrijft een byte aan gegevens naar de uitvoerstroomwriteBoolean()
- schrijft gegevens in booleaanse vormwriteChar()
- schrijft gegevens in karaktervormwriteInt()
- schrijft gegevens in integer-vormwriteObject()
- schrijft object naar de outputstroom
Voorbeeld 1: Java ObjectOutputStream
Laten we eens kijken hoe we ObjectOutputStream
objecten in een bestand kunnen opslaan en ObjectInputStream
die 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 ObjectOutputStream
om 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
ObjectOutputStream
genaamd objOut met behulp van deFileOutputStream
genoemde fileOutObjectInputStream
genaamd objIn met behulp van deFileInputStream
genoemde 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 Serializable
interface. Het is omdat de ObjectOutputStream
enige 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).