Lesen von Daten aus einer Textdatei mit Java

8

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:

%Vor%     
Saran 19.05.2010, 09:05
quelle

16 Antworten

11

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 Ссылка )

    
aioobe 19.05.2010 09:09
quelle
9

Wie wäre es mit dem Scanner? Ich denke, mit Scanner ist einfacher

%Vor%

Lesen Sie mehr über Java IO hier

    
vodkhang 19.05.2010 09:09
quelle
3

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:

%Vor%

(Beachten Sie, dass dieser Code keine Ausnahmen behandelt oder den Stream usw. schließt)

    
Chris 19.05.2010 09:09
quelle
3
%Vor%     
Richard H 19.05.2010 09:14
quelle
2

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 ..

    
Kallathiyan 11.05.2011 10:19
quelle
1

Der Grund, warum dein Code die letzte Zeile übersprungen hat, war, dass du fis.available() > 0 anstelle von fis.available() >= 0

gesetzt hast     
JimmyBob23 24.11.2014 01:25
quelle
1

In Java 8 können Sie Ihre Textdatei einfach in eine Liste von Strings mit Streams umwandeln, indem Sie Files.lines und collect verwenden:

%Vor%     
Kris 04.05.2015 10:57
quelle
1
%Vor%     
Abdullah Ahmad 14.10.2017 17:25
quelle
0

Probieren Sie dies nur eine kleine Suche in Google

%Vor%     
Incognito 19.05.2010 09:10
quelle
0

Versuchen Sie, java.io.BufferedReader so zu verwenden.

%Vor%     
Ravindra Gullapalli 19.05.2010 09:11
quelle
0

Ja, die Pufferung sollte für eine bessere Leistung verwendet werden. Verwenden Sie BufferedReader ODER byte [], um Ihre temporären Daten zu speichern.

danke.

    
Parth 19.05.2010 11:28
quelle
0

user scanner sollte es funktionieren

%Vor%     
Gautam 30.07.2013 15:22
quelle
0
%Vor%     
Jayanta Rout 29.10.2013 04:59
quelle
0
%Vor%     
marycrete 05.08.2015 13:36
quelle
-2
%Vor%     
shiva prasad 03.10.2014 04:17
quelle
-3

Einfacher Code zum Lesen der Datei in JAVA:

%Vor%     
user3289522 09.02.2014 12:37
quelle

Tags und Links