/ / Java: InputStream. Flux d'entrée

Java: InputStream. Flux d'entrée

Java, comme de nombreux langages modernesprogrammation, prend en charge la mise en œuvre de flux d'entrée de données. En Java, un InputStream est la classe de base pour les flux d'octets. Cette classe est abstraite, c'est-à-dire que dans le processus du programme, nous ne pouvons pas en créer d'instance. Cependant, le package io possède de nombreuses classes qui héritent et étendent les fonctionnalités d'InputStream. Pour utiliser cette classe dans votre code, vous devez l'importer à partir du package java.io.InputStream. Ensuite, nous examinons les fonctionnalités de base fournies par la classe InputStream, ainsi que les classes principales qui l'implémentent.

Méthodes de la classe InputStream

Avant de commencer une étude détailléeméthodes de la classe InputStream, il convient de mentionner qu'elle implémente les interfaces Closeable et AutoCloseable. L'interface Closeable nous indique que lorsque vous avez terminé de travailler avec un flux, vous devez le fermer. Cela se fait en utilisant la méthode close (). Étant donné que la plupart des méthodes de la classe InputStream lèvent une exception IOException en cas d'erreur, toutes les opérations doivent être effectuées dans le bloc try et la méthode close () doit être placée dans le bloc finally afin qu'elle fonctionne quel que soit le résultat du travail dans le corps try.

L'interface à fermeture automatique réduit considérablementcode technique, car il permet à la méthode close () de fonctionner automatiquement et de ne pas ajouter de bloc finally à votre code. Si vous utilisez la septième version ou une version ultérieure de Java, un InputStream peut être placé dans un soi-disant essai avec des ressources, qui prend en charge toutes les opérations pour fermer les threads.

java inputstream to string

Considérez les méthodes de base de la classe InputStream:

  • int available () - retourne le nombre d'octets disponibles pour la lecture;
  • int read () - prend l'octet actuel de la ressource et le renvoie dans une représentation entière; si tous les octets sont lus, renvoie -1;
  • int read (byte [] buffer) - lit les octets disponibles dansle tampon spécifié sous la forme d'un tableau de type octet (le nombre d'octets lus est égal à la taille du tampon spécifié; renvoie le nombre d'octets qui ont pu être lus; si tous les octets disponibles sont lus, il renvoie -1);
  • int read (octet [] tampon, int offset, intnombre d'octets) - surcharger la méthode précédente, fait de même, mais à partir de la position indiquée dans le "décalage" et lit autant que spécifié dans le "nombre d'octets";
  • saut long (nombre d'octets long) - saute le nombre spécifié d'octets et retourne le nombre réel d'octets sautés.

InputStream est implémenté par plusieurs classes conçues pour fonctionner avec différentes sources et types de données. Ci-dessous se trouve l'arbre d'héritage.

flux d'entrée java

Lecture de fichiers

Flux d'octets pour lire les informations des fichiersimplémenté par la classe FileInputStream. Pour ouvrir un fichier en lecture d'octets, il suffit de créer une instance de cette classe en passant son nom au constructeur comme argument. Si le fichier portant le nom transmis n'existe pas, une exception de type FileNotFoundException sera levée.

En cas d'ouverture réussie d'un fichier, son utilisation est effectuée à l'aide des méthodes décrites ci-dessus, puisque FileInputStream est un héritier de InputStream.

Lecture des types de données primitifs

L'exemple précédent décrit l'utilisation devaleurs d'octets pouvant être interprétées comme des caractères. Mais que faire si nous devons lire une valeur entière, fractionnaire ou logique? Pour ce faire, en Java, un InputStream est indirectement étendu par la classe DataInputStream. Cette classe est un wrapper pour un InputStream, qui lui est transmis lors de sa création en tant qu'argument au constructeur. Ce type de flux lit les données sous forme binaire.

DataInputStream implémente également l'interface DataInput et ses méthodes de lecture des types de données primitifs. Voici une liste de ces méthodes.

java io inputstream

Les noms des méthodes parlent d'eux-mêmes - chacun d'eux est conçu pour lire un certain type de données.

Flux d'entrée tamponné

Le flux de lecture de données en mémoire tampon est implémenté.la classe BufferedInputStream en Java. Un InputStream est encapsulé par cette classe. Cette classe complète le flux avec un tampon, qui vous permet de lire en même temps non pas un, mais plusieurs octets. Cela permet d'augmenter considérablement la productivité de l'opération. BufferedInputStream est un descendant indirect de InputStream et, en conséquence, hérite de toutes les méthodes ci-dessus.

Cette classe a deux constructeurs:

  • BufferedInputStream (flux d'entrée InputStream);
  • BufferedInputStream (flux d'entrée InputStream, taille de tampon int)

D'après la signature des constructeurs, vous pouvez comprendre que le premier définit la taille de tampon par défaut et que le second a la possibilité de la définir manuellement.

Conclusion

Nous avons examiné les principales implémentations d'InputStream. Si vous devez convertir les octets reçus en une chaîne, alors dans Java InputStream to String (), malheureusement, n'est pas surchargé, vous devrez donc utiliser des utilitaires spéciaux, par exemple IOUtils de la bibliothèque Apache Commons.

J'ai aimé:
0
Messages populaires
Développement spirituel
Nourriture
yup