Classe Java FileInputStream

le FileInputStream classe de la java.io package peut être utilisé pour lire des données (en octets) à partir de fichiers.

Il étend le InputStream classe abstraite.

Java FileInputStream is a subclass of InputStream class.

Avant d’en savoir plus sur FileInputStream , assurez-vous de connaître les fichiers Java.


Créer un FileInputStream

Afin de créer un flux d’entrée de fichier, nous devons importer le java.io.FileInputStream paquet en premier. Une fois le package importé, voici comment créer un flux d’entrée de fichier en Java.

1. Utilisation du chemin d’accès au fichier

 FileInputStream input = new FileInputStream(stringPath);
 

Ici, nous avons créé un flux d’entrée qui sera lié au fichier spécifié par lechemin.

2. Utilisation d’un objet du fichier

 FileInputStream input = new FileInputStream(File fileObject);
 

Ici, nous avons créé un flux d’entrée qui sera lié au fichier spécifié par fileObject .


Méthodes de FileInputStream

le FileInputStream classe fournit des implémentations pour différentes méthodes présentes dans le InputStream classe.

read (), méthode

  •  read() – lit un seul octet du fichier
  •  read(byte[] array) – lit les octets du fichier et les stocke dans le tableau spécifié
  •  read(byte[] array, int start, int length) – lit le nombre d’octets égal àlongueurà partir du fichier et stocke dans le tableau spécifié à partir de la positiondébut

Supposons que nous ayons un fichier nomméinput.txtavec le contenu suivant.

 This is a line of text inside the file.
 

Essayons de lire ce fichier en utilisant FileInputStream .

 import java.io.FileInputStream;

public class Main {

  public static void main(String args[]) {

     try {
        FileInputStream input = new FileInputStream("input.txt");

        System.out.println("Data in the file: ");

        // Reads the first byte
        int i = input.read();

       while(i != -1) {
           System.out.print((char)i);

           // Reads next byte from the file
           i = input.read();
        }
        input.close();
     }

     catch(Exception e) {
        e.getStackTrace();
     }
  }
}
 

Production

Données dans le fichier:
Il s'agit d'une ligne de texte à l'intérieur du fichier.

Dans l’exemple ci-dessus, nous avons créé un flux d’entrée de fichier nommécontribution. Le flux d’entrée est lié auinput.txtfichier.

 FileInputStream input = new FileInputStream("input.txt");
 

Pour lire les données du fichier, nous avons utilisé le read() méthode à l’intérieur de la boucle while.


available () Méthode

Pour obtenir le nombre d’octets disponibles, nous pouvons utiliser le available() méthode. Par exemple,

 import java.io.FileInputStream;

public class Main {

   public static void main(String args[]) {

      try {
         // Suppose, the input.txt file contains the following text
         // This is a line of text inside the file.
         FileInputStream input = new FileInputStream("input.txt");

         // Returns the number of available bytes
         System.out.println("Available bytes at the beginning: " + input.available());

         // Reads 3 bytes from the file
         input.read();
         input.read();
         input.read();

         // Returns the number of available bytes
         System.out.println("Available bytes at the end: " + input.available());

         input.close();
      }

      catch (Exception e) {
         e.getStackTrace();
      }
   }
}
 

Production

Octets disponibles au début: 39
Octets disponibles à la fin: 36

Dans l’exemple ci-dessus,

  1. Nous utilisons d’abord le available() pour vérifier le nombre d’octets disponibles dans le flux d’entrée du fichier.
  2. Nous avons ensuite utilisé le read() méthode 3 fois pour lire 3 octets dans le flux d’entrée du fichier.
  3. Maintenant, après avoir lu les octets, nous avons à nouveau vérifié les octets disponibles. Cette fois, les octets disponibles ont diminué de 3.

skip (), méthode

Pour supprimer et ignorer le nombre d’octets spécifié, nous pouvons utiliser le skip() méthode. Par exemple,

 import java.io.FileInputStream;

public class Main {

   public static void main(String args[]) {

      try {
         // Suppose, the input.txt file contains the following text
         // This is a line of text inside the file.
         FileInputStream input = new FileInputStream("input.txt");

         // Skips the 5 bytes
         input.skip(5);
         System.out.println("Input stream after skipping 5 bytes:");

         // Reads the first byte
         int i = input.read();
         while (i != -1) {
            System.out.print((char) i);

            // Reads next byte from the file
            i = input.read();
         }

         // close() method
         input.close();
      }
      catch (Exception e) {
         e.getStackTrace();
      }
   }
}
 

Production

Flux d'entrée après avoir sauté 5 octets:
est une ligne de texte à l'intérieur du fichier.

Dans l’exemple ci-dessus, nous avons utilisé le skip() pour ignorer 5 octets de données du flux d’entrée du fichier. Par conséquent, les octets représentant le texte« Ce « n’est pas lu à partir du flux d’entrée.


close (), méthode

Pour fermer le flux d’entrée du fichier, nous pouvons utiliser le close() méthode. Une fois la close() est appelée, nous ne pouvons pas utiliser le flux d’entrée pour lire les données.

Dans tous les exemples ci-dessus, nous avons utilisé le close() méthode pour fermer le flux d’entrée du fichier.


Autres méthodes de FileInputStream

Méthodes Descriptions
 finalize()     garantit que le close() la méthode est appelée
 getChannel()     renvoie l’objet de FileChannel associé au flux d’entrée
 getFD()     renvoie le descripteur de fichier associé au flux d’entrée
 mark()   marquer la position dans le flux d’entrée jusqu’à laquelle les données ont été lues
 reset()