G
Guest
Gast
hallo,
ich möchte eine etwa 3 MB große CSVdatei einlesen,bestehend aus etwa 200.000 Zeilen und 3 Spalten einlesen
Folgende readFile Methode,die auch funktioniert:
Das Problem:ich benötige für das einlesen der 3Mb großen datei etwa zwsichen 4-5 Sekunden (P4 2,6 Ghz und 256MB Ram) Was ziemlich lange ist,wie ich meine. die meiste Zeit etwa 3 Sekunden brauche ich für:
isInsert = myZeile.insertColumn(split.replaceAll("\"", "")); -->replaceAll schluckt etwa 2 Sekunden !!!!!!!!!!!
Hat jemand eine Idee warum das sol lange dauert,bzw. einen Vorschlag wie man es schöner/schneller machen könnte
das replaceAll brauche ich,um Hochkommatas zu entfernen,die sollen nicht mit gespeichert werden,stehen in der CVS datei als Texttrenner
eine zeile sieht etwa so aus: "Spalte1","Spalte2","Spalte3"
Gruß
und danke für eure Hilfe
sky
*codetags eingefügt*
-Wildcard-
ich möchte eine etwa 3 MB große CSVdatei einlesen,bestehend aus etwa 200.000 Zeilen und 3 Spalten einlesen
Folgende readFile Methode,die auch funktioniert:
Code:
public boolean readFile(String filename) {
// alle zeilen löschen,falls schon was da war
rows = new ArrayList<Row>();
String zeile = "";
String split[] = null;
int zeilenNummer = 0;
boolean isInsert = false;
try {
FileReader file = new FileReader(filename);
BufferedReader data = new BufferedReader(file);
// zeilenweise lesen
while ((zeile = data.readLine()) != null) {
// neues zeielnobjekt
Row myZeile = new Row(++zeilenNummer);
split = zeile.split(",\""); // Feldtrenner
for (int i = 0; i < split.length; i++) {
// leere Zeile ignorieren
if (!split[i].equals("")) {
// eventuell Leerzeilen zwischen zwei ; entfernen
// und Spalten ins zeilenobjekt packen
// die erste Zeile enthaelt immer die Spaltenbezeichner
isInsert = myZeile.insertColumn(split[i].replaceAll("\"", ""));
}
}
// Zeile in die zeilen-liste
isInsert = this.rows.add(myZeile);
}
} catch (FileNotFoundException e1) {
System.out.println("");
System.out.println("Datei existiert nicht");
isInsert = false;
} catch (IOException e2) {
System.out.println("");
System.out.println("Fehler beim Lesen der Datei");
isInsert = false;
}
return isInsert;
}
Das Problem:ich benötige für das einlesen der 3Mb großen datei etwa zwsichen 4-5 Sekunden (P4 2,6 Ghz und 256MB Ram) Was ziemlich lange ist,wie ich meine. die meiste Zeit etwa 3 Sekunden brauche ich für:
isInsert = myZeile.insertColumn(split.replaceAll("\"", "")); -->replaceAll schluckt etwa 2 Sekunden !!!!!!!!!!!
Hat jemand eine Idee warum das sol lange dauert,bzw. einen Vorschlag wie man es schöner/schneller machen könnte
das replaceAll brauche ich,um Hochkommatas zu entfernen,die sollen nicht mit gespeichert werden,stehen in der CVS datei als Texttrenner
eine zeile sieht etwa so aus: "Spalte1","Spalte2","Spalte3"
Gruß
und danke für eure Hilfe
sky
*codetags eingefügt*
-Wildcard-