Bonjour,
Pourriez-vous m'expliquer le role de la méthode read (byte[] b) de la classe : FileInputStream ?
Cordialement,
Bonjour,
Pourriez-vous m'expliquer le role de la méthode read (byte[] b) de la classe : FileInputStream ?
Cordialement,
Hello,
FileInputStream étend InputStream, donc, même rôle que la même méthode dans InputStream.
Tu peux t'inspirer de la FAQ sur les entrées / sorties en Java.
Mais pour faire court : read ça veut dire lire. Une méthode read() sert à lire le contenu.
Là on parle de celle qui prend en paramètre un tableau d'octets, byte[].
Ce tableau est l'endroit où il faut stocker les octets lus. L'idée est de créer un tableau d'octets d'une certaine taille, ce qu'on appelle un buffer, et d'appeler read() pour qu'elle remplisse ce buffer avec le contenu du fichier.
Exemple de comment ça marche : Supposons que je veuille compter combien il y a d'octets nuls dans un fichier :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 Path file = Paths.get("file.bin"); int nbNullBytes = 0; // ouvrir le fichier pour le lire avec un InputStream try(InputStream stream = Files.newInputStream(file)) { // construire un buffer, disons de 1024 octets byte[] buffer = new byte[1024]; // remplir le buffer int readInBuffer = stream.read(buffer); // boucler tant que read() renvoie un nombre positif. C'est le nombre d'octets lu, et un nombre négatif indique la fin de l'InputStream while(readInBuffer > 0) { // traiter les octets lus dans le buffer for(int i = 0; i < readInBuffer; i++) { if(buffer[i] == 0) { nbNullBytes++; } } // remplir le buffer pour la prochaine boucle readInBuffer = stream.read(buffer); } } System.out.println("Nombre d'octets nuls: " + nbNullBytes);
Merci pour votre aide![]()
Partager