La classe java.io.InputStream
modélise les flots d'entrée (lecture) d'octets, la classe
java.io.FileInputStream est une sous-classe
dédiée aux flots dirigés depuis les fichiers binaires. Voici un exemple
d'utilisation.
try {
// Créé un flot d'entrée depuis le fichier binaire fichier.bin
FileInputStream fis = new FileInputStream("fichier.bin");
// Calcule le nombre d'octets disponibles à la lecture
int disponible = fis.available();
// Créé un buffer d'octets capable de lire toutes les données à lire
byte[] donnees = new byte[disponible];
// Lit les données depuis le flot
int nb = fis.read(donnees);
// Affiche le nombre d'octets lus
System.out.println("Octets disponibles : "+ disponible+". Octets lus:"+nb);
// Ferme le flot
fis.close();
} catch (Exception ex) {
System.err.prinln("Erreur de lecture "+ex);
}
La méthode int read(byte[] buffer) essaye de
remplir le buffer au maximum. Elle renvoie le nombre d'octets effectivement lus
ou -1 si il n'y avait rien à lire.