Classe Java InputStream : Méthodes clés et exemple pratique
Classe Java InputStream : Méthodes clés et exemple pratique
Dans le package java.io, InputStream est une superclasse abstraite représentant un flux d'entrée orienté octets. Bien qu'on ne puisse pas l'instancier directement, ses sous-classes concrètes offrent des mécanismes puissants pour lire des données depuis des fichiers, des tableaux d'octets et d'autres sources.
Sous-classes principales d'InputStream
L'utilisation pratique de InputStream repose sur ses sous-classes. Les plus courantes sont :
FileInputStream– lit des octets depuis un fichier sur le disqueByteArrayInputStream– lit des octets depuis un tableau d'octets en mémoireObjectInputStream– désérialise des objets depuis un flux d'entrée
Nous explorerons chaque sous-classe dans des tutoriels dédiés, mais concentrons-nous sur FileInputStream pour l'instant.
Création d'un InputStream
Pour créer un InputStream, importez d'abord la classe :
import java.io.InputStream;
Comme InputStream est abstraite, instanciez l'une de ses sous-classes, par exemple :
InputStream flux = new FileInputStream("exemple.txt");
Vous pouvez remplacer FileInputStream par n'importe quelle autre sous-classe concrète.
Méthodes principales d'InputStream
Les méthodes suivantes sont communes à toutes les implémentations de InputStream :
int read()– lit un seul octet, le renvoie commeintou-1si fin de fluxint read(byte[] b)– remplit le tableau d'octets fourni et renvoie le nombre d'octets lusint available()– indique le nombre d'octets lisibles sans blocagevoid mark(int readlimit)– marque la position courante pour réinitialisation ultérieurevoid reset()– repositionne le flux à la dernière marqueboolean markSupported()– indique simarketresetsont supportéslong skip(long n)– saute et ignorenoctetsvoid close()– ferme le flux et libère les ressources système
Exemple pratique : Lecture d'un fichier avec FileInputStream
Supposons un fichier texte input.txt contenant :
Ceci est une ligne de texte dans le fichier.
Voici un programme complet qui ouvre le fichier, affiche les octets disponibles, lit le contenu dans un tableau d'octets et affiche le résultat :
import java.io.FileInputStream;
import java.io.InputStream;
public class Main {
public static void main(String[] args) {
byte[] tampon = new byte[100];
try (InputStream input = new FileInputStream("input.txt")) {
System.out.println("Octets disponibles : " + input.available());
int octetsLus = input.read(tampon);
System.out.println("Octets lus : " + octetsLus);
String donnees = new String(tampon, 0, octetsLus);
System.out.println("Données lues du fichier :");
System.out.println(donnees);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Sortie
Octets disponibles : 39
Octets lus : 39
Données lues du fichier :
Ceci est une ligne de texte dans le fichier.
Cet exemple montre comment travailler avec FileInputStream dans un bloc try-with-resources, assurant la fermeture automatique du flux même en cas d'exception.
Pour une exploration plus approfondie de l'API, consultez la documentation officielle : Javadoc InputStream.
Java
- Comprendre le mot-clé final en Java : variables, méthodes et classes
- L'opérateur instanceof en Java : guide complet
- Comprendre les classes imbriquées statiques en Java : utilisation, différences et exemples
- Maîtriser les classes internes anonymes en Java : définition, syntaxe et exemples pratiques
- Le pattern Singleton en Java expliqué : implémentation et utilisation sûre
- Maîtriser la réflexion Java : inspection des classes, méthodes et champs à l'exécution
- Maîtriser Java ObjectOutputStream : Sérialisation, méthodes et exemples pratiques
- Maîtriser Java Scanner : Guide complet avec exemples pratiques
- Maîtriser les génériques Java : Construire du code réutilisable et type-safe