Einlesen einer Textdatei

Status
Nicht offen für weitere Antworten.

Paladin

Bekanntes Mitglied
Hi,

ich schreibe gerade ein Programm bei dem unter anderem eine oder mehrere Textdateien mit 200000 Zeilen und mehr eingelesen werden soll. Das Programm sortiert die relevanten Daten aus der Textdatei in 5 verschiedenen Hashtables.
Später sollen die Daten aus den Hashtables dann in eine Datenbank geschrieben werden.

Mein Problem dabei ist, dass das einlesen der Textdatei viel zu lange dauert. Allein bei einer Textdatei mit 30000 Zeilen braucht mein Programm ca. 30 Sekunden. Ich durchlaufe alle Zeilen in der Datei mit einer for Schleife die etwa so aufgebaut ist:

Code:
int dateilaenge = file.length();
int i = 0;
String aktuelleZeile;
BufferedReader in = new BufferedReader(new FileReader(file));

for(i=0;i<dateilaenge;i++) {
   aktuelleZeile = in.readLine();
   //hier kommt der ganze restliche Sortier-Code
}

Kann man an diesem Statement vielleicht noch etwas tun um die Performance spürbar zu verbessern?
Gibt es vielleicht eine andere Möglichkeit als BufferedReader(FileReader) die für diese Operation besser geeignet ist?

Vielen Dank im voraus

Gruß

Paladin
 

8ull23y3

Bekanntes Mitglied
Der BufferedReader is schon der schnellere. Aber bei 30000 Zeilen? Ist das so ein großes wunder?
 

8ull23y3

Bekanntes Mitglied
Aber du kannste das mal probieren:

Code:
BufferedReader br = new BufferedReader(new FileReader("wasweissich.txt"));
String tmp;
while((tmp = br.readLine) != null)
{
  // mach was
}

wenn ich mich richtig erinnere ;)
 

Paladin

Bekanntes Mitglied
Hi 8ull23y3,

das ist echt unglaublich. Das ersetzen der For Schleife durch eine While Schleife hat die Programmlaufzeit
bei 30000 Zeilen von 30 Sekunden auf 1(!) Sekunde verkürzt. Ich hätte nie gedacht, dass der Performanceunterschied zwischen den beiden Schleifen so extrem ist. Vielen Dank für diesen genialen Tipp. :applaus:

Gruß

Paladin
 
B

Beni

Gast
Es liegt weniger an der Schleife, sondern mehr an der Schleifenbedingung...

Deine Schleife wurde für jedes Zeichen durchlaufen, bullzeyes hingegen nur für jede Zeile.
 
R

Roar

Gast
@Bleiglanz: es funktioniert, da readLine() ja netterweise null zurückliefert wenn nix mehr da ist, anstatt ne EOFException zu werfen o.Ä.

@Paladin: weil wahrscheilnich 90% der schleifedurchläufe bei dir versuchen was zu lesen, obwohl die datei schon längst fertig eingelesen wurde. darum dauert deine methode auch so lang.
 

milanwb

Aktives Mitglied
Hallo,

habe das selbe Problem bei meinem Programm, nur dass es ein signiertest Applet ist und dann der Browser abschmiert. Kleinere Textdateien funktionieren. Es muss aber ein Applet sein, weil ich sonst nicht auf die Mysqldatenbank zugeifen kann.
Das Programm an sich gleicht Daten der Textdatei auf meiner Festplatte mit den meiner Mysqldatenbank ab.
Nur diese Datei ist nun mal 20 mb groß (eine Preisliste von nem Onlineshop).

Ich schreibe mal hier einen Teilcode rein. Vll kann man den irgendwie verbessern oder muss man eine andere Methode bei Applets verwenden?

Code:
// Hinweis
// die Variabel dateiname ist ein String der an diese Methode übergeben wird


BufferedReader in = new BufferedReader(new FileReader(this.dateiname)); 
String tmp = null;


while ( (tmp = in.readLine()) != null) {

//gleiche dateien ab...

}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Problem beim Einlesen einer Textdatei Allgemeine Java-Themen 12
stylegangsta Mehrere html seiten einer Homepage einlesen und als Textdatei ausgeben Allgemeine Java-Themen 14
D Input/Output Zeilen werden "ignoriert" beim Einlesen aus einer Textdatei Allgemeine Java-Themen 3
Y Einlesen & Ausgeben einer Textdatei _2 Allgemeine Java-Themen 3
Y Einlesen & Ausgeben einer Textdatei Allgemeine Java-Themen 5
S Rückgabe einer HttpURLConnection für eine Seite einlesen bei der man eingeloggt ist..? Allgemeine Java-Themen 5
K Input/Output String aus einer Datei einlesen und in anderer Datei speichern Allgemeine Java-Themen 20
P Input/Output java.util.Scanner in einer Schleife und Exception-Behandlung: Einlesen einer Zahl Allgemeine Java-Themen 4
N Einlesen einer Kostenmatrix, Verarbeitung mit Nearest Neighbor Allgemeine Java-Themen 1
M Einlesen einer Datei in Java Allgemeine Java-Themen 3
D Quelltext einer URL einlesen Allgemeine Java-Themen 2
J Text einer .csv Datei einlesen und Zeile in NEUE Zeile hänge Allgemeine Java-Themen 1
G Einlesen von Parameterwerten aus einer txt-Datei Allgemeine Java-Themen 2
P IOException beim einlesen einer XML- Datei Allgemeine Java-Themen 8
S Fehler beim Einlesen einer Webseite mit 1.4 Allgemeine Java-Themen 3
L Frage zu java.util.regex und Einlesen einer Datei Allgemeine Java-Themen 2
C Variable aus einer Methode einlesen in einer verarbeiten und Allgemeine Java-Themen 6
G outOfMemoryError beim Einlesen einer Datei abfangen? Allgemeine Java-Themen 13
flashfactor Komischer Fehler beim Einlesen einer Datei. Allgemeine Java-Themen 2
P Probleme beim Einlesen einer TXT/CSV-Datei aus einem JAR Allgemeine Java-Themen 7
F NullpointerException beim Einlesen einer Datei Allgemeine Java-Themen 13
S Bookmark HTML Datei einlesen, alle Links erhalten und manche editieren..? (aktuell JSoup) Allgemeine Java-Themen 4
killig Textdatei einlesen und in HashMap speichern (duplikate entfernen) Allgemeine Java-Themen 12
N Statistische Auswertung von Logfiles (Einlesen, auswerten und grafische Aufbereitung von logfiles) mit Java Allgemeine Java-Themen 9
Master3000 Java Datei mehrmals einlesen Allgemeine Java-Themen 4
R Sonderzeichen aus Datei einlesen und in Datei ausgeben. Allgemeine Java-Themen 17
M Website Quelltext mit Java einlesen Allgemeine Java-Themen 10
L Datein einlesen. Allgemeine Java-Themen 5
Thallius Key/Value Table in Klasse einlesen Allgemeine Java-Themen 14
F Datei in String-Array einlesen Allgemeine Java-Themen 8
N Datei Zeilenweise Einlesen, Versteckte Zeichen Allgemeine Java-Themen 5
H Strategy Pattern - changeColor() Methode - input rgd oder hex einlesen Allgemeine Java-Themen 1
T Umlaute in Eclipse einlesen funktioniert nicht Allgemeine Java-Themen 16
Henrithebegiinerofjava Erste Schritte Werte in Eingabefelder einlesen und wiederholen lassen. Allgemeine Java-Themen 3
R .txt Datei einlesen und auf der Konsole ausgeben lassen Allgemeine Java-Themen 11
K Datei (CSV-ähnlich) in Java einlesen & mit teil der Daten Graphen erstellen Allgemeine Java-Themen 9
J Input/Output Word Datei einlesen, verarbeiten und abspeichern Allgemeine Java-Themen 3
K RTF-Dokumente einlesen Allgemeine Java-Themen 1
E Compiler-Fehler Unicode Zeichen einlesen Allgemeine Java-Themen 1
S Variablen String[] Array per schleife in int[] einlesen Allgemeine Java-Themen 8
J Java 8 Datei einlesen Allgemeine Java-Themen 1
S Handschrift einlesen & darauf reagieren OCR Allgemeine Java-Themen 2
J Mehrere Wörter getrennt in eine Array einlesen, wie ? Allgemeine Java-Themen 7
R Datei einlesen mit Win7 Allgemeine Java-Themen 8
E Best Practice LaTeX aus Textdateien einlesen und bearbeiten Allgemeine Java-Themen 4
KaffeeFan Bilddatei einlesen und bearbeiten? Allgemeine Java-Themen 5
F Datei einlesen funktioniert nicht Allgemeine Java-Themen 3
T Geschlossen: Apache POI - Excel einlesen Allgemeine Java-Themen 0
J BufferedReader Datei einlesen Allgemeine Java-Themen 8
L Level einlesen Allgemeine Java-Themen 9
J Jar Datei mit anderer .jar einlesen Allgemeine Java-Themen 4
J Best Practice Java 8 Datei einlesen und verarbeiten Allgemeine Java-Themen 2
M Exceltabelle in Java erstellen und Werte einlesen Allgemeine Java-Themen 32
B Java - einlesen von Dateien und herausschneiden von XML Dokumenten Allgemeine Java-Themen 5
T xls-Datei per Apache Commons CsvParser einlesen UTF-8 Zeichen russische Zeichen Allgemeine Java-Themen 2
D Wörter aus Datei einlesen Allgemeine Java-Themen 9
Ananaskirsche Input/Output Zeile aus Datei einlesen Allgemeine Java-Themen 10
OnDemand String aus html einlesen Allgemeine Java-Themen 2
H Excel Datei einlesen mit Apache POI Allgemeine Java-Themen 1
P Input/Output Datei einlesen per Scanner(f) - mit Cron gehts nicht Allgemeine Java-Themen 1
OnDemand Dateien einlesen und vergleichen Allgemeine Java-Themen 1
AssELAss XML Datei einlesen und anschließen formatiert ausgeben in Datei Allgemeine Java-Themen 0
L einfache Verzinsung mit for-Schleife & Ausschluss von Werten beim Einlesen Allgemeine Java-Themen 5
L Input/Output Datei einlesen und Inhalt in Array schreiben Allgemeine Java-Themen 3
MiMa Umlaute beim Einlesen von Dateinamen Allgemeine Java-Themen 12
C Verzeichnis ins JMenu einlesen Allgemeine Java-Themen 2
M Parameter-Datei einlesen (zeilenweise); Dateiintegrität Allgemeine Java-Themen 7
J TextArea einlesen, mit string Allgemeine Java-Themen 2
I Input/Output .csv Datei einlesen Allgemeine Java-Themen 4
Kenan89 Schnelleres Einlesen von Images Allgemeine Java-Themen 6
A TXT File einlesen unterschiedliche Zeilenlänge Allgemeine Java-Themen 9
A Input/Output Bild in Java einlesen und analysieren! Allgemeine Java-Themen 8
H Scanner soll einen Inputredirect einlesen, liest aber nicht jedes Wort ein. Allgemeine Java-Themen 3
R String einlesen Allgemeine Java-Themen 8
S Datei in File-Objekt mit UTF-8 einlesen Allgemeine Java-Themen 2
K XML Quelltext Website einlesen?! Allgemeine Java-Themen 3
M File einlesen während es beschrieben wird.. Allgemeine Java-Themen 6
S Spaltenweise einlesen Allgemeine Java-Themen 9
K JAVA Datei einlesen Allgemeine Java-Themen 2
S Input/Output Latin-9 (ISO 8859-15) Textdatei einlesen Allgemeine Java-Themen 2
M Erste Schritte alle xmlFiles in zugehörige pdfFiles einlesen Allgemeine Java-Themen 4
T XML einlesen Allgemeine Java-Themen 14
M Eclipse Stackoverflow beim Einlesen von großen Bilder in kd Baum Allgemeine Java-Themen 15
C Strings in Excel einlesen! Allgemeine Java-Themen 2
K htmlCode einlesen, Speicherüberlauf? zu viel code? Allgemeine Java-Themen 21
F JavaMail - Lokale eMail-Datei einlesen und parsen? Allgemeine Java-Themen 9
K CSV einlesen und speichern Allgemeine Java-Themen 7
Q Text Datei einlesen Allgemeine Java-Themen 27
T Liste mit GregorianCalendar-Objekten in List einlesen, mit Collection sortieren und ausgeben Allgemeine Java-Themen 3
M PDF einlesen mit PDFBox Allgemeine Java-Themen 3
L Benutzereingabe einlesen Allgemeine Java-Themen 5
D class Datei einlesen Allgemeine Java-Themen 4
B StringBuilder von File einlesen Allgemeine Java-Themen 8
N Probleme mit Umlauten beim Einlesen Allgemeine Java-Themen 6
M Txt einlesen & Objekte erzeugen Allgemeine Java-Themen 2
E Leerzeichen verschwinden beim Einlesen von .txt-Dateien Allgemeine Java-Themen 5
A JExcel Formel einlesen Allgemeine Java-Themen 2
G Java PDF-Einlesen Allgemeine Java-Themen 9
H excel einlesen und in db schreiben Allgemeine Java-Themen 2
A Datei als Object einlesen und das Object als Singleton instance setzen. Allgemeine Java-Themen 13

Ähnliche Java Themen

Neue Themen


Oben