Ich muss eine Textdatei Zeile für Zeile mit Java lesen. Ich verwende available()
Methode von FileInputStream
, um die Datei zu überprüfen und zu durchlaufen. Während des Lesens endet die Schleife jedoch nach der Zeile vor der letzten Zeile. i.e. , wenn die Datei 10 Zeilen enthält, liest die Schleife nur die ersten 9 Zeilen.
Snippet verwendet:
Sie sollten available()
nicht verwenden. Es gibt keine Garantien was auch immer. Aus den API-Dokumenten von available()
:
Gibt eine Schätzung der Anzahl der Bytes zurück, die von diesem Eingabestream gelesen (oder übersprungen) werden können, ohne beim nächsten Aufruf einer Methode für diesen Eingabestream blockiert zu werden.
Sie möchten wahrscheinlich etwas wie
verwenden %Vor%(übernommen von Ссылка )
Wenn Sie Zeile für Zeile lesen möchten, verwenden Sie BufferedReader
. Es hat eine readLine()
-Methode, die die Zeile als String zurückgibt, oder null, wenn das Ende der Datei erreicht wurde. So können Sie etwas tun wie:
(Beachten Sie, dass dieser Code keine Ausnahmen behandelt oder den Stream usw. schließt)
Sie können FileUtils von org.apache.commons.io.FileUtils versuchen, versuchen Sie, jar von hier herunterzuladen
und Sie können die folgende Methode verwenden: FileUtils.readFileToString ("yourFileName");
Hoffe es hilft dir ..
Der Grund, warum dein Code die letzte Zeile übersprungen hat, war, dass du fis.available() > 0
anstelle von fis.available() >= 0
Versuchen Sie, java.io.BufferedReader so zu verwenden.
%Vor%Tags und Links java file-io fileinputstream