grosse Textdatei performant als string speichern

OTB

Mitglied
Hallo
Ich möchte eine grosse Textdatei (ca 160000 Wörter, ca. 2 MByte) einlesen und komplett als String speichern,
Welcher Weg ist der performanteste?
 
Bei 2MB is das doch Wurst, da braucht man keine Sekunde für. Wenn dann sollte man sich ehr fragen ob man wirklich die ganze Datei auf einmal benötigt.
 
Man sollte immer dran denken gleich größere Stücke am Stück zu laden (byte[] buffer). Aber bei 2MB ist das wirklich noch ziemlich egal.
 
Komm bis 200mb pro textdatei und dann gehts nochmal um das thema.

Aber auf vrdacht getippt, du liest 1 Zeile/ 1 Zeichen ein, und machst dann
buffer = buffer + neuerkrams?
Guck dir in dem fall die klasse Stringbuilder an.
 
Also ich weiss nicht woran es liegt, wenn ich die 2MByte Textdatei verkleinere funktioniert das Programm,
sonst bleibt es "hängen".

Die Klasse:
Java:
public class DateiLesen {
  private String text;
  private String dateiname;

  public DateiLesen(String dateiname) {
    this.dateiname = dateiname;
  }

  public DateiLesen() {
  }

// getter/setter entfernt


  public void fileToString() throws FileNotFoundException {
    File file;
    Scanner scan;
    StringBuilder sb = new StringBuilder();
    file = new File(this.dateiname);
    scan = new Scanner(file);
    while (scan.hasNext()) {
      sb.append(scan.nextLine());
    }
    scan.close();
    this.text = sb.toString();
  }
}

Main-Klasse:
Java:
public class Main {
  public static void main(String[] args) {
    DateiLesen dl = new DateiLesen("/home/jo/Dokumente/wortliste.txt");
    try {
      dl.fileToString();
    } catch (FileNotFoundException ex) {
      Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
    }
    System.out.println(dl.getText());
  }
}
 
hab' den "Übeltäter" gefunden:
Die Ausgabe des textes erzeugt das Problem (benutze Netbeans 6.8)
Java:
]
System.out.println(dl.getText());
ohne die Ausgabe dauert es aber immer noch ca 2 Sekunden!
 
550-650 millisek. dauert das Einlesen jetzt.
(eben hing noch ein Prozess und klaute cpu-Zeit)
Danke an Alle, die geantwortet haben.
 

Zurück
Oben