Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Java

Classe Java ObjectInputStream

Classe Java ObjectInputStream

Dans ce didacticiel, nous allons découvrir Java ObjectOutputStream et ses méthodes à l'aide d'exemples.

Le ObjectInputStream classe du java.io package peut être utilisé pour lire des objets qui ont été précédemment écrits par ObjectOutputStream .

Il étend le InputStream classe abstraite.

Avant de découvrir le ObjectInputStream classe, assurez-vous de connaître la classe ObjectOutputStream.

Fonctionnement d'ObjectInputStream

Le ObjectInputStream est principalement utilisé pour lire les données écrites par le ObjectOutputStream .

En gros, le ObjectOutputStream convertit les objets Java en flux correspondants. C'est ce qu'on appelle la sérialisation. Ces flux convertis peuvent être stockés dans des fichiers ou transférés via des réseaux.

Maintenant, si nous devons lire ces objets, nous utiliserons le ObjectInputStream qui reconvertira les flux en objets correspondants. C'est ce qu'on appelle la désérialisation.

Créer un ObjectInputStream

Afin de créer un flux d'entrée d'objet, nous devons importer le java.io.ObjectInputStream paquet d'abord. Une fois le package importé, voici comment créer un flux d'entrée.

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

Dans l'exemple ci-dessus, nous avons créé un flux d'entrée d'objet nommé objStream qui est lié au flux d'entrée de fichier nommé fileStream .

Maintenant, le objStream peut être utilisé pour lire des objets à partir du fichier.

Méthodes d'ObjectInputStream

Le ObjectInputStream la classe fournit des implémentations de différentes méthodes présentes dans le InputStream classe.

méthode read()

  • read() - lit un octet de données du flux d'entrée
  • readBoolean() - lit les données sous forme booléenne
  • readChar() - lit les données sous forme de caractères
  • readInt() - lit les données sous forme entière
  • readObject() - lit l'objet à partir du flux d'entrée

Exemple 1 :Java ObjectInputStream

Voyons comment nous pouvons utiliser le ObjectInputStream classe pour lire les objets écrits par le ObjectOutputStream classe.

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

Sortie

Integer data: 5
String data: This is programiz

Dans l'exemple ci-dessus, nous avons utilisé le readInt() et readObject() méthode pour lire des données entières et des données d'objet à partir du fichier.

Ici, nous avons utilisé le ObjectOutputStream pour écrire des données dans le fichier. Nous lisons ensuite les données du fichier en utilisant le ObjectInputStream .

Exemple 2 :Java ObjectInputStream

Voyons un autre exemple pratique,

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

Sortie

Dog Name: Tyson
Dog Breed: Labrador

Dans l'exemple ci-dessus, nous avons créé

  • ObjectOutputStream nommé sortie en utilisant le FileOutputStream nommé fichier
  • ObjectInputStream nommée entrée en utilisant le FileInputStream nommé fileStream
  • Un objet chien du Chien classe

Ici, nous avons ensuite utilisé le flux de sortie de l'objet pour écrire l'objet dans le fichier. Et, le flux d'entrée d'objet pour lire l'objet à partir du fichier.

Remarque :Le chien la classe implémente le Serializable interface. C'est parce que le ObjectOutputStream écrit uniquement les objets sérialisables dans le flux de sortie.

Autres méthodes d'ObjectInputStream

Méthodes Descriptions
available() renvoie le nombre d'octets disponibles dans le flux d'entrée
mark() marque la position dans le flux d'entrée jusqu'à laquelle les données ont été lues
reset() renvoie le contrôle au point du flux d'entrée où la marque a été définie
skipBytes() ignore et supprime les octets spécifiés du flux d'entrée
close() ferme le flux d'entrée de l'objet

Pour en savoir plus, visitez Java ObjectInputStream (documentation officielle de Java).


Java

  1. Mot-clé Java final
  2. Opérateur instanceof Java
  3. Classe statique imbriquée Java
  4. Classe anonyme Java
  5. Classe Java Singleton
  6. Réflexion Java
  7. Classe Java ObjectOutputStream
  8. Génériques Java
  9. Classe de fichier Java