Dans la section précédente, nous avons appris à construire un flux d'entrée d'octets de fichier. Dans cette section, nous continuons à apprendre à utiliser le flux d'entrée pour lire les octets et fermer le flux.
Le but du flux d'entrée est de fournir un canal pour lire les données de la source via ce canal. Le programme peut lire les données de la source via ce canal. Le flux d'octets du fichier peut appeler la méthode de lecture héritée de la classe parent pour lire le fichier de manière séquentielle. , tant que le flux n'est pas fermé. Chaque appel à la méthode read lit séquentiellement le contenu restant du fichier jusqu'à ce que la fin du fichier ou le flux d'entrée d'octets du fichier soit fermé.
La méthode de lecture du flux d'entrée d'octets lit les données dans la source en octets.
Le flux d'entrée appelle cette méthode pour lire un seul octet de données à partir de la source. Cette méthode renvoie la valeur de l'octet (un entier compris entre 0 et 255). Si l'octet n'est pas lu, il renvoie -1.
Le flux d'entrée appelle cette méthode pour essayer de lire les octets b.length de la source dans le tableau d'octets b et renvoie le nombre réel d'octets lus. Si la fin du fichier est atteinte, -1 est renvoyé.
Le flux d'entrée appelle cette méthode pour tenter de lire len octets de la source dans le tableau d'octets b et renvoie le nombre réel d'octets lus. Si la fin du fichier est atteinte, -1 est renvoyé et le paramètre off spécifie une position dans le tableau d'octets pour commencer à stocker les données lues.
Remarque : Le flux FileInputStream lit le fichier de manière séquentielle Tant que le flux n'est pas fermé, chaque appel à la méthode read lit le reste du contenu source de manière séquentielle jusqu'à ce que la fin de la source ou du flux soit fermée.
Les flux d'entrée fournissent tous une méthode de fermeture close() . Bien que tous les flux ouverts soient automatiquement fermés à la fin du programme, c'est toujours une bonne habitude de fermer explicitement tous les flux ouverts une fois que le programme a fini d'utiliser le flux. Si les flux ouverts ne sont pas fermés, un autre programme ne sera peut-être pas autorisé à manipuler les ressources utilisées par ces flux.
Par exemple:
importjava.io.*;publicclassMain{publicstaticvoidmain(Stringargs[]){intn=-1;byte[]a=newbyte[100];try{Filef=newFile(Main.java);InputStreamin=newFileInputStream(f);while( (n=in.read(a,0,100))!=-1){Strings=newString(a,0,n);System.out.print(s);}in.close();}catch(IOExceptione) {System.out.println(FilereadError+e);}}}
Remarque : Lors de la conversion des octets lus en chaîne, les octets lus réels doivent être convertis en chaîne, comme dans l'exemple ci-dessus :
Chaînes=nouvelleChaîne(a,0,n);
ne peut pas s'écrire comme suit :
Chaînes=nouvelleChaîne(a,0,100);