eine Datei schnellstmöglich einlesen

heinz86

Mitglied
Hallo,

für ein Projekt muss ich relativ schnell Dateien einlesen und als String abspeichern. Mit diesen Strings werden anschließend verschiedene Operationen durchgeführt. Die Dateien haben jedoch eine Größe von zwischen 20MB und 100MB, so dass mein derzeitiger Code einfach zu lange braucht um die Datei komplett einzulesen.

Java:
public String getText(String inputName){
  inputstring = "";
  Scanner scan;
		
  try {
    scan = new Scanner(new FileInputStream(inputName));
  } catch (IOException e) {
    e.printStackTrace();
  }

  while (scan.hasNextLine()) {
    inputstring += scan.nextLine();
  }
		
  return inputstring;
}

Gibt es daher eine Möglichkeit diese deutlich schneller zu machen, damit der Nutzer nicht so lange warten muss und denkt, dass sich mein Programm aufgehängt hat?
 

c_sidi90

Top Contributor
Du könntest die Dateien in verschiedenen Intervalen anzeigen lassen bzw. alle 100 Datensätze , so dass der Benutzer sieht das etwas geschieht. Ein Timer oder Thread wäre eine Möglichkeit.
 

jgh

Top Contributor
ohne große Erfahrungswerte würde ich mal tippen, dass es mit einem BufferedReader schneller geht:
Code von dieser Seite-ungetestet
Java:
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

/**
 *
 * @author javadb.com
 */
public class Main {
    
    /**
     * Reads text from a file line by line
     */
    public void readFromFile(String filename) {
        
        BufferedReader bufferedReader = null;
        
        try {
            
            //Construct the BufferedReader object
            bufferedReader = new BufferedReader(new FileReader(filename));
            
            String line = null;
            
            while ((line = bufferedReader.readLine()) != null) {
                //Process the data, here we just print it out
                System.out.println(line);
            }
            
        } catch (FileNotFoundException ex) {
            ex.printStackTrace();
        } catch (IOException ex) {
            ex.printStackTrace();
        } finally {
            //Close the BufferedReader
            try {
                if (bufferedReader != null)
                    bufferedReader.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        new Main().readFromFile("myFile.txt");
    }
}
 

c_sidi90

Top Contributor
Auch mit einem BufferedReader kann das Einlesen von über 100mb großen Dateien einige Sekunden dauern. DU könntest auch eine Progressbar implementieren die den Fortschritt anzeigt.
 

heinz86

Mitglied
Sekunden zum Einlesen wäre ja kein Problem. Aber bei einer 1MB großen Datei dauert der Vorgang des Einlesens schon mehrere Minuten. Ich werde mir den BUfferedReader mal anschauen und schauen, ob dieser schneller ist.

Wie würde man denn am Besten eine ProgressBar erstellen? Gibt es dort schon was fertiges, auf dem man aufbauen kann?
 

c_sidi90

Top Contributor
Das ist mir auch klar, aber ich gehe mal davon aus, dass er nicht vor einer 200 mhz Mühle sitzt ;) Und für alles andere sollte jeder Rechner leistungsstark genug sein, .txt Dateien unterhalb einer Minute einzulesen.
 
B

Beni

Gast
Dieses Stücklein Code...
Java:
inputstring += scan.nextLine();
... ist auch nicht sehr freundlich. Für jede Linie die du einliest, wird ein neuer String erstellt, und zwei alte String kopiert. Benutz mal einen StringBuilder:
Java:
StringBuilder builder = new StringBuilder();

while( ... ){
  builder.append( scan.nextLine() );
}
 

heinz86

Mitglied
Dieses Stücklein Code...
Java:
inputstring += scan.nextLine();
... ist auch nicht sehr freundlich. Für jede Linie die du einliest, wird ein neuer String erstellt, und zwei alte String kopiert. Benutz mal einen StringBuilder:
Java:
StringBuilder builder = new StringBuilder();

while( ... ){
  builder.append( scan.nextLine() );
}

Okay. Habe jetzt das ganze mit dem BufferedReader umgesetzt. Aber ich weiß jetzt noch nicht, wie ich genau die while-Schleife abfragen muss?

Es sieht jetzt so aus, aber irgendwie passt das noch nicht:
Java:
	public String readFromFile (String filename) {
		BufferedReader bR = null;
		StringBuilder builder = new StringBuilder();
		String inputtext = null;
		
		try {
			bR = new BufferedReader(new FileReader(filename));
				
			while ((inputtext = bR.readLine()) != null) {
				builder.append(inputtext);
			}
		} catch (FileNotFoundException ex) {
			ex.printStackTrace();
		} catch (IOException ex) {
			ex.printStackTrace();
		} finally {
			try {
				if (bR != null)
					bR.close();
			} catch (IOException ex) {
				ex.printStackTrace();
			}
		}
		return inputtext;
	}
 

jgh

Top Contributor
Java:
public String readFromFile(String filename) {
		BufferedReader bR = null;
		StringBuilder builder = new StringBuilder();
		String inputtext = null;

		try {
			bR = new BufferedReader(new FileReader(filename));

			while ((inputtext = bR.readLine()) != null) {
				builder.append(inputtext);
			}
		} catch (FileNotFoundException ex) {
			ex.printStackTrace();
		} catch (IOException ex) {
			ex.printStackTrace();
		} finally {
			try {
				if (bR != null)
					bR.close();
			} catch (IOException ex) {
				ex.printStackTrace();
			}
		}
		return builder.toString();
	}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
A Wie führe ich eine Batch-Datei von meiner Java-Anwendung aus? Java Basics - Anfänger-Themen 18
O zweidimensionales array in eine csv-Datei Java Basics - Anfänger-Themen 1
H Daten aus einer Datei in eine Liste speichern Java Basics - Anfänger-Themen 23
L Konstruktor für eine Map-Datei/Map-Datei einlesen Java Basics - Anfänger-Themen 5
C "HelloWorld" - Dateien erstellt, aber ist es eine class-Datei? Java Basics - Anfänger-Themen 2
L Iterieren über eine CSV Datei Java Basics - Anfänger-Themen 7
X Wo steht, ob eine Datei big, little oder bi-endian codiert ist? Java Basics - Anfänger-Themen 3
J Lesen und schreiben in eine Datei(Anfänger- Dateizugriffe) Java Basics - Anfänger-Themen 3
F Input/Output die eine txt-Datei funktioniert die andere nicht Java Basics - Anfänger-Themen 8
F Mehrere Zeilen zu einer Zeile zusammenfügen und in eine Datei schreiben Java Basics - Anfänger-Themen 1
Henri Bestimmte Werte eine XML-Datei ausgeben. Java Basics - Anfänger-Themen 8
P Erste Schritte Schreiben in eine Datei Java Basics - Anfänger-Themen 9
D Daten mit Apache POI in eine Excel Datei schreiben Java Basics - Anfänger-Themen 5
R Eine Datei mit mehreren Zeilen beschreiben Java Basics - Anfänger-Themen 5
G tga Datei lesen und in eine matrix umwandeln Java Basics - Anfänger-Themen 1
stylegangsta Input/Output Hat eclipse eine Macke oder mein Code Array Datei einlesen Java Basics - Anfänger-Themen 5
1 Im Java Projekt eine txt datei einbinden? Java Basics - Anfänger-Themen 8
A CSV datei eine Bestimmte Zeile ansprechen Java Basics - Anfänger-Themen 1
S Eine Spalte einer CSV Datei ausgeben Java Basics - Anfänger-Themen 2
S Input/Output Alphabet in eine Datei schreiben und Anzahl von Zeichen ausgeben. Java Basics - Anfänger-Themen 4
I Werte im Speicher auswerten ohne Umweg über eine Datei Java Basics - Anfänger-Themen 16
C auslesen bestimmter werte einer textdatei und anschl. hineinschreiben in eine neue txt-datei. Java Basics - Anfänger-Themen 2
M Zahlen als Bytes in eine Datei speichern, daraus wieder auslesen Java Basics - Anfänger-Themen 2
R Charset eine Datei Java Basics - Anfänger-Themen 3
J Methode um eine HTML-Datei zu öffnen Java Basics - Anfänger-Themen 10
J Können mehere Threads parallel eine Datei lesen? Java Basics - Anfänger-Themen 4
A Eine Datei Lesen und bestimmte Position überschreiben Java Basics - Anfänger-Themen 2
D (Eine) Datei zippen Java Basics - Anfänger-Themen 2
I fertige xml-datein in eine noch aufzubauende xml-datei einfügen Java Basics - Anfänger-Themen 4
B String der eigentlich eine Ansammlung von HEX zeichen ist in datei schreiben in Hex Java Basics - Anfänger-Themen 8
S ArrayList in eine Txt-Datei speichern Java Basics - Anfänger-Themen 3
S Erste Schritte Kleine Problem mit Ausgabe in eine Datei Java Basics - Anfänger-Themen 11
B Input/Output In Datei an eine bestimmte Stelle schreiben Java Basics - Anfänger-Themen 37
A Werte per Zufall aus einer Datei ziehen und in eine neue Datei schreiben Java Basics - Anfänger-Themen 9
S Alle 60min prüfen ob eine Datei da ist Java Basics - Anfänger-Themen 6
Z In JList per Doppelklick eine Datei öffnen (z.B. ein PDF) Java Basics - Anfänger-Themen 16
P Java Object das eine HTML Datei repräsentiert Java Basics - Anfänger-Themen 19
S Datenströne - Text in eine Datei einlesen, umwandeln und in eine neue Datei schreiben Java Basics - Anfänger-Themen 6
L Zeichen für Zeichen eine Datei ändern Java Basics - Anfänger-Themen 2
R Gibt es eine (Schnittstelle) für .ini Datei Formatierungen? Java Basics - Anfänger-Themen 8
A Wie mit Java eine .vbs Datei starten lassen? Java Basics - Anfänger-Themen 4
N XML-Datei in eine ArrayList Java Basics - Anfänger-Themen 6
J Wie auf eine Datei innerhalb des JAR-Files zugreifen Java Basics - Anfänger-Themen 2
T Was ist eine *.jar Datei Java Basics - Anfänger-Themen 9
VfL_Freak [JNI ]aus einer nativen DLL eine JAR-Datei erzeugen ?? Java Basics - Anfänger-Themen 4
3 Eine HTML Datei in eine Java Datei umschreiben Java Basics - Anfänger-Themen 23
isowiz Mehrere Threads schreiben in eine Datei Java Basics - Anfänger-Themen 5
C Abschnittsweise in eine Datei schreiben Java Basics - Anfänger-Themen 2
G Rausfinden, ob eine Datei gesperrt ist Java Basics - Anfänger-Themen 9
Dit_ Eine Datei in jar einbinden Java Basics - Anfänger-Themen 8
S mehrere einzelne klassen in eine datei packen Java Basics - Anfänger-Themen 4
S In eine datei schreiben Java Basics - Anfänger-Themen 3
G Serialisieren mehrerer Objekte in EINE (XML)-Datei Java Basics - Anfänger-Themen 12
X ZipFile: wie kann ich darin eine Datei löschen und hinzufügen? Java Basics - Anfänger-Themen 5
Sebi Was ist eine Batch datei Java Basics - Anfänger-Themen 2
T Java Webstart soll eine Datei speichern Java Basics - Anfänger-Themen 2
K Daten in eine Text datei schreiben !!!! Java Basics - Anfänger-Themen 6
G POI: Aus einer Datei auslesen und in eine andere Datei speichern Java Basics - Anfänger-Themen 18
M Aus Javacode eine Jar.Datei?? Java Basics - Anfänger-Themen 2
K Eine Datei erstellen Java Basics - Anfänger-Themen 2
J Objektvariablen in eine Datei schreiben Java Basics - Anfänger-Themen 2
B Wie kann ich eine dauerhaft ausführbare Datei erstellen? Java Basics - Anfänger-Themen 6
H mehrere Strings zeitlich versetzt in eine Datei schreiben Java Basics - Anfänger-Themen 3
T RandomAccessFile - Wie schreibe ich etwas in eine txt Datei? Java Basics - Anfänger-Themen 5
J System.out.printf in eine Datei umleiten ? Java Basics - Anfänger-Themen 4
2 Mit Java in eine WORD-Datei schreiben Java Basics - Anfänger-Themen 18
V Datenbank in eine Datei packen Java Basics - Anfänger-Themen 3
A Schreiben in eine Datei Java Basics - Anfänger-Themen 5
D An eine ausgewählte Stelle in der Datei schreiben? Java Basics - Anfänger-Themen 7
X txt datei in eine datenstruktur einlesen Java Basics - Anfänger-Themen 3
S Daten aus einer JTable in eine .doc-word- datei exportieren? Java Basics - Anfänger-Themen 7
J Ein Java-Programm in eine *.exe Datei 'packen' Java Basics - Anfänger-Themen 20
A Problem beim Schreiben in eine Datei Java Basics - Anfänger-Themen 3
J Eine swf-datei in einen Frame einfügen? Java Basics - Anfänger-Themen 6
J Aus einem Java Programm eine .java datei Kompilieren Java Basics - Anfänger-Themen 6
L Mehrere Objekte mit NIO in eine Datei schreiben Java Basics - Anfänger-Themen 4
S Wie parst man eine XML Datei mit Sax? Java Basics - Anfänger-Themen 2
W Double Werte von eine txt Datei direkt einlesen Java Basics - Anfänger-Themen 4
M Java Quellcode in eine exe datei umwandeln Java Basics - Anfänger-Themen 4
W Klasse in eine extra Java-Datei Java Basics - Anfänger-Themen 21
Q Integer Arrays in eine Datei Speichern Java Basics - Anfänger-Themen 9
B Wie eine bestimmte Zeile einer Txt-Datei lesen ? Java Basics - Anfänger-Themen 5
G wo speichert man am besten eine Datei? Java Basics - Anfänger-Themen 4
K Text von Eingabefeld in eine txt Datei speichern Java Basics - Anfänger-Themen 2
Bernasconi Programmierstil / Wann eine neue Datei? Java Basics - Anfänger-Themen 5
G problem beim schreiben in eine txt datei Java Basics - Anfänger-Themen 2
roflomfg Text in eine lokale "*.txt-Datei" speichern Java Basics - Anfänger-Themen 9
F mehrer Textdateien Inhalte in eine TXT Datei Java Basics - Anfänger-Themen 16
N JavaHelp System in ein eine jar-Datei einbinden Java Basics - Anfänger-Themen 5
M eine *.gif datei zum jar archiv hinzufügen Java Basics - Anfänger-Themen 3
C String in eine *.ini-Datei Java Basics - Anfänger-Themen 29
I eine Klasse aus der Jar-Datei aus dem Servlet starten Java Basics - Anfänger-Themen 4
N Array leert sich beim schrieben in eine Datei selbstständig Java Basics - Anfänger-Themen 2
E BufferedWriterin eine JAR-Datei? Java Basics - Anfänger-Themen 3
K Wie erstelle ich eine txt-Datei? Java Basics - Anfänger-Themen 10
G Wie erstelle ich eine ausführbare ".jar" Datei? Java Basics - Anfänger-Themen 22
L Ist eine Datei binary oder text encoded Java Basics - Anfänger-Themen 8
I Wie man eine Zip Datei entpackt Java Basics - Anfänger-Themen 2
G html datei + Klassen in eine jar datei stecken? Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben