Hallo,
ich habe einen ganz einfachen Fileloader für ein Programm geschrieben.
Er soll eine Textdatei laden, das Encoding der Datei soll einstellbar sein.
Klappt auch wunderbar, nur leider erzeugt er beim Laden der Datei 100% Last auf der CPU.
Nicht so der Hit, weil es dann halt ewig dauert auch kleinste Dateien zu lesen.
Ich denke mal, dass die Zeile
der Fehler ist, hier wird ja wie verrückt verkettet.
Zeilenweises Einlesen brachte nur geringe Verbesserung.
Was mache ich falsch?
Ein 4MB-Textfile sollte doch in unter 10 Minuten zu lesen sein ;-)
Danke
Roland
ich habe einen ganz einfachen Fileloader für ein Programm geschrieben.
Er soll eine Textdatei laden, das Encoding der Datei soll einstellbar sein.
Klappt auch wunderbar, nur leider erzeugt er beim Laden der Datei 100% Last auf der CPU.
Nicht so der Hit, weil es dann halt ewig dauert auch kleinste Dateien zu lesen.
Ich denke mal, dass die Zeile
Code:
while((c = eingabe.readLine()) != null)
str += c;
Zeilenweises Einlesen brachte nur geringe Verbesserung.
Was mache ich falsch?
Ein 4MB-Textfile sollte doch in unter 10 Minuten zu lesen sein ;-)
Danke
Roland
Code:
public class FileLoader {
public static String load(String filename, String inputencoding) {
//Datei einlesen
String str ="";
String c="";
try
{
InputStreamReader ein = new InputStreamReader(new FileInputStream((filename)), inputencoding);
BufferedReader eingabe = new BufferedReader(ein);
System.out.println(" Loading data from file " + filename +" using encoding " + inputencoding + "...");
while((c = eingabe.readLine()) != null)
str += c;
eingabe.close();
System.out.println(" Finished loading data...");
return str;
}
catch ( IOException e ) {
System.out.println(" Error reading file " + filename + ": " + e );
}
return str;
}
}