Im vorherigen Abschnitt haben wir gelernt, wie man einen Dateibyte-Eingabestream erstellt. In diesem Abschnitt lernen wir weiterhin, wie man den Eingabestream zum Lesen von Bytes und zum Schließen des Streams verwendet.
Der Zweck des Eingabestreams besteht darin, einen Kanal zum Lesen von Daten aus der Quelle bereitzustellen. Über diesen Kanal kann der Dateibytestream die von der übergeordneten Klasse geerbte Lesemethode aufrufen, um die Datei sequentiell zu lesen , solange der Stream nicht geschlossen ist. Jeder Aufruf der Lesemethode liest nacheinander den verbleibenden Inhalt der Datei, bis das Ende der Datei oder der Dateibyte-Eingabestream geschlossen wird.
Die Lesemethode des Byte-Eingabestreams liest die Daten in der Quelle in Bytes.
Der Eingabestream ruft diese Methode auf, um ein einzelnes Datenbyte aus der Quelle zu lesen. Diese Methode gibt den Bytewert zurück (eine Ganzzahl zwischen 0 und 255). Wenn das Byte nicht gelesen wird, gibt sie -1 zurück.
Der Eingabestream ruft diese Methode auf, um zu versuchen, b.length-Bytes aus der Quelle in das Byte-Array b zu lesen, und gibt die tatsächliche Anzahl der gelesenen Bytes zurück. Wenn das Ende der Datei erreicht ist, wird -1 zurückgegeben.
Der Eingabestream ruft diese Methode auf, um zu versuchen, len Bytes aus der Quelle in das Byte-Array b zu lesen, und gibt die tatsächliche Anzahl der gelesenen Bytes zurück. Wenn das Ende der Datei erreicht ist, wird -1 zurückgegeben und der Parameter off gibt eine Position im Byte-Array an, an der mit der Speicherung der gelesenen Daten begonnen werden soll.
Hinweis : Der FileInputStream-Stream liest die Datei sequentiell, solange der Stream nicht geschlossen ist, liest jeder Aufruf der Lesemethode den Rest des Quellinhalts sequentiell, bis das Ende der Quelle oder des Streams geschlossen wird.
Alle Eingabestreams bieten eine Schließmethode close() . Obwohl alle geöffneten Streams automatisch geschlossen werden, wenn das Programm endet, ist es dennoch eine gute Angewohnheit, alle offenen Streams explizit zu schließen, nachdem das Programm die Verwendung des Streams beendet hat. Wenn offene Streams nicht geschlossen werden, ist es einem anderen Programm möglicherweise nicht gestattet, die von diesen Streams verwendeten Ressourcen zu manipulieren.
Zum Beispiel:
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);}}}
Hinweis : Beim Konvertieren der gelesenen Bytes in einen String müssen die tatsächlich gelesenen Bytes in einen String umgewandelt werden, wie im obigen Beispiel:
Strings=newString(a,0,n);
kann nicht geschrieben werden als:
Strings=newString(a,0,100);