Input/Output Probleme beim Parsen von CSV und TXT Dateien

MadBlue

Aktives Mitglied
Hi zusammen,

ich arbeite an einer Software die unter anderem Datenbestände aus CSV und TXT Dateien importieren soll.

Die TXT Dateien sind per Tabulator getrennt und die Werte stehen in "". Bei den CSV Dateien sind die Werte per Semicolon getrennt, Umfassende Zeichen gibt es nicht.

Zum Parsen verwende ich die Bibliothek opencsv 2.3.
Das Parsen der TXT Dateien funktioniert soweit auch ziemlich gut. Beim Parsen der CSV passieren jedoch immer wieder Fehler. Meist äußert sich das darin das irgendwo mittem im Datensatz ein Spalte übersprungen wird und die folgenden Werte nicht mehr in der richtigen Spalte stehen.

Dabei ist der verwendete Code sehr simpel und ähnlich dem, was ich in einem entsprechendem Beispiel gefunden habe.

Java:
CSVReader reader = new CSVReader(new FileReader(path + "/temp/ebay.csv"), ';');	
String[] array = new String[60];

			reader.readNext();
			reader.readNext();
			reader.readNext();
			while ((array = reader.readNext()) != null) {
			
		        int miCount = 0;
		        int miCount2 = 1;
		        
		        while (miCount < 37){
		        	System.out.println("Spalte " + miCount2 +": '"+ array[miCount] +"'");
		        	miCount2++;
		        	miCount++;
		        }
Die ersten drei Zeilen einer CSV Datei werden übersprungen, der rest wird in ein StringArrey geschrieben. Von dem aus arbeite ich dann hinterher weiter.

Mach ich da irgendetwas falsch?
Gibt es da vielleicht eine Bibliothek die besser funktioniert bzw. mit der ihr gute Erfahrungen gemacht habt?

Außerdem bin ich mir nicht ganz sicher welchen Zeichensatz die Dateien verwenden. Gibt's da eine einfache Möglichkeit das raus zu bekommen?

Jede Hilfe wäre echt klasse!

Sören
 
Zuletzt bearbeitet:

HarleyDavidson

Bekanntes Mitglied
Macht dein Programm da etwas falsch oder ist ein Fehler in der CSV (passiert gerne mal, z.B. das ein Semikolon fehlt oder so)?

Textbasierte Dateien einlesen geht auch ganz ohne zusätzliche Bibliotheken:

Java:
private void einlesen() throws FileNotFoundException, IOException
    {
        FileReader fr = new FileReader( "quelldatei.csv" );
        BufferedReader br = new BufferedReader( fr );
        //Spaltennamen sind nicht interessant
        br.readLine();
        String zeile = br.readLine();
        //CSV zeilenweise einlesen
        while ( zeile != null )
        {
            //Zeile splitten
            String[] infos = zeile.split( ";" );
            String info1= infos[0];
            String info2 = infos[1];
            String info3 = infos[2];
            //mach was mit den coolen Infos!
            //nächste Zeile einlesen
            zeile = br.readLine();
        }
        br.close();
        fr.close();
    }

Bei den mit Tabulator getrennten Werten nimmst du in Zeile 12

Java:
String[] infos = zeile.split( "\t" );
 

Phash

Top Contributor
Ich nutze für sowas JSefa JSefa - JSefa
aber das ist Geschmackssache..
in JSefa erstelle ich eine "Zeilenklasse" mit Attributen - und sag dann, welches Attribut an welcher Stelle in der Datei kommt.
im Code kann ich dann einfach auf diese Zeilenklasse zugreifen, und hab sprechende Namen für die Inhalte



was mir auffällt:

kann es sein, dass es Zeilen gibt, die weniger als 37 Spalten haben?
Das müsste ja dann eine ArrayIndexOutOfBounds Exception geben...

(fängst du irgendwo diese Exceptions?)
 

MadBlue

Aktives Mitglied
Hi,

also weniger als 37 Spalten sind es nie, da der Datensatz um die 45 Spalten hat, mich aber nur die ersten 37 interessieren.

Das ganze steht in einem Try&Catch Block und zumindest da ist mir noch keine Exception aufgefallen. Sprich das läuft schon gescheit durch.

Ich werd mir JSefa mal ansehen.

@ HarleyDavidson:

Danke.
So hab ich das tatsächlich anfangs versucht. Bei den TXT Dateien gab es da aber seltsame Seiteneffekte, da die Tabulatoren nicht immer korrekt erkannt wurden. (also auch wesentlich häufiger als das ich jetzt die Probleme mit den CSV Daten habe)

Soweit ich das sehen kann sind die Datensätze schon korrekt. Beim importien nach MS Excel werden diese jedenfalls korrekt angezeigt!

Sören
 

HarleyDavidson

Bekanntes Mitglied
Hi,
also weniger als 37 Spalten sind es nie, da der Datensatz um die 45 Spalten hat, mich aber nur die ersten 37 interessieren.

Prüfe das nochmals korrekt. Wenn jetzt zum Beispiel nur ein Semikolon fehlt, dann verrutschen alle Werte und du bekommst dein Phänomen, dass ein Wert in der falschen Spalte steht.
Vielleicht kannst du die Datei vorher auf Korrektheit überprüfen (Anzahl Semikolon pro Zeile z.B.)?
 

MadBlue

Aktives Mitglied
Hi,

ich denke ich habe das Problem lokalisiert. Und zwar: IN den Textwerten der zu Importierenden Dateien stehen ab und zu die Sonderzeichen ' und "... damit kommt der CSV Pharser wohl nicht klar, da er damit die zu lesende Zeile beendet. Wenn man die Zeichen manuell raus nimmt, läuft er durch.

Gibt's ne einfache Möglichkeit die Zeichen beim Lesen der Datei zu entfernen ohne das andere komische Dinge passieren? Oder gibt's vielleicht eine Möglichkeit die Parameter des CSV so zu Ändern das er die " und ' komplett ignoriert?

Sören
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M probleme beim parsen Java Basics - Anfänger-Themen 7
I Projekte in IDE untereinander sharen / Probleme beim Build Java Basics - Anfänger-Themen 8
T Probleme beim Import eines Git-Repos Java Basics - Anfänger-Themen 2
N Probleme beim printen von Arrays durch for Schleife Java Basics - Anfänger-Themen 3
tom.j85 TicTacToe - probleme beim Casten Java Basics - Anfänger-Themen 6
D Probleme beim Kompelieren mache ich etwas falsch ? Java Basics - Anfänger-Themen 3
K Probleme beim Programm schreiben - Lesen von Dateiinhalten -zaehlen von Wörtern/ Buchstaben Java Basics - Anfänger-Themen 4
M Probleme beim aktualisieren eines JPanels Java Basics - Anfänger-Themen 7
J Probleme beim Array ausgeben Java Basics - Anfänger-Themen 4
M Probleme beim verwenden von Packages Java Basics - Anfänger-Themen 6
G Methoden Probleme beim Methodenaufruf Java Basics - Anfänger-Themen 2
M Array mit eigenem Datentyp probleme beim übergeben Java Basics - Anfänger-Themen 6
G Probleme beim casten von double zu int Java Basics - Anfänger-Themen 3
J Probleme beim schreiben von Dateien Java Basics - Anfänger-Themen 5
A Probleme beim zykl. aktulisieren von Daten in JTable Java Basics - Anfänger-Themen 3
M Erste Schritte Probleme beim Verknüpfen von Methoden Java Basics - Anfänger-Themen 15
A Probleme beim Methodenaufruf von Object[] ! Java Basics - Anfänger-Themen 12
A Probleme beim Methodenaufruf von char[] ! Java Basics - Anfänger-Themen 10
D JTable Probleme beim Sortieren von Zahlen. Java Basics - Anfänger-Themen 6
M OOP Probleme beim Funktionsaufruf, Java OpenCV Java Basics - Anfänger-Themen 0
X Probleme beim rekursiven Durchsuchen von Verzeichnissen Java Basics - Anfänger-Themen 1
B Probleme beim einlesen einer short variablen für einen Array Java Basics - Anfänger-Themen 1
A LinkedList: Probleme beim Auslesen Java Basics - Anfänger-Themen 2
F Probleme beim Übersetzen Java Basics - Anfänger-Themen 7
O Probleme beim import von Projekten in Eclipse Java Basics - Anfänger-Themen 7
C OOP Probleme beim Addieren von Arrays Java Basics - Anfänger-Themen 4
N Probleme beim entfernen eines JPanels Java Basics - Anfänger-Themen 4
J Probleme beim JRadioButton Java Basics - Anfänger-Themen 2
S Klasse properties - Probleme beim umwandeln Java Basics - Anfänger-Themen 3
C Probleme beim Array Java Basics - Anfänger-Themen 6
G Probleme beim HTML auslesen Java Basics - Anfänger-Themen 6
N Probleme beim Rechnen mit Integer und double Java Basics - Anfänger-Themen 4
T Probleme beim casten Java Basics - Anfänger-Themen 9
C Input/Output Probleme beim .jar erstellen Java Basics - Anfänger-Themen 5
M Klassen Probleme beim Debuggen - Datentypkonvertierung - Speichern in Datei Java Basics - Anfänger-Themen 7
W Probleme beim Wiedereinstieg Java Basics - Anfänger-Themen 25
P Interpreter-Fehler Probleme beim Ausführen einer Jar Datei Java Basics - Anfänger-Themen 2
F MVC -> Probleme beim Controller Java Basics - Anfänger-Themen 6
0 Log4J Probleme beim einlesen der Log datei Java Basics - Anfänger-Themen 2
F Probleme beim umwandeln von String in Int Java Basics - Anfänger-Themen 10
M Kontaktbuch - Probleme beim Input Java Basics - Anfänger-Themen 3
H Probleme beim erzeugen einer Headerdatei mit javah Java Basics - Anfänger-Themen 3
T Interpreter-Fehler Probleme beim .jar ausführen mit JRE 64bit Java Basics - Anfänger-Themen 9
M Probleme beim Beenden eines Threads Java Basics - Anfänger-Themen 25
A Probleme beim erstellen einer lauffähigen jar Java Basics - Anfänger-Themen 3
A Probleme beim IntervallCheck Java Basics - Anfänger-Themen 4
M Probleme beim Aufruf von Listener in anderer Klasse Java Basics - Anfänger-Themen 9
R Probleme mit NullPointer beim Mp3 abspielen (JMF) Java Basics - Anfänger-Themen 21
I Probleme beim Laden einer .gif-Datei. Java Basics - Anfänger-Themen 8
I Probleme beim Laden eins BufferedImage Java Basics - Anfänger-Themen 8
Sebi Probleme beim Kompilieren Java Basics - Anfänger-Themen 11
I Probleme beim adden von Elementen in einer ArrayList Java Basics - Anfänger-Themen 10
C Probleme beim casten und Objekt zugriff Java Basics - Anfänger-Themen 12
L Probleme beim Ausführen des Programms Java Basics - Anfänger-Themen 9
N Probleme beim abfangen von fehlern Java Basics - Anfänger-Themen 4
B kleine Probleme beim auslesen einer m3u Datei Java Basics - Anfänger-Themen 3
S Probleme beim Umwandeln von Long nach Int Java Basics - Anfänger-Themen 4
G Probleme beim Zufügen eines JLabels Java Basics - Anfänger-Themen 18
M Probleme beim Jar erstellen Java Basics - Anfänger-Themen 7
M Probleme beim Objekzugriff auf andere Klasse: NullPointerExc Java Basics - Anfänger-Themen 5
I Probleme beim Einrichten von Java (PATH-Veriable) Java Basics - Anfänger-Themen 4
A Memory Probleme beim Laden von thumbnails Java Basics - Anfänger-Themen 3
G Probleme beim Login (Webservice) Java Basics - Anfänger-Themen 4
B Probleme beim Kompilieren. Java Basics - Anfänger-Themen 12
R Probleme beim Repaint Java Basics - Anfänger-Themen 3
M probleme beim applet einbinden Java Basics - Anfänger-Themen 7
L beim ersten compilen schon erste probleme Java Basics - Anfänger-Themen 8
R Probleme beim umwandeln eines String zu einem Int Wert Java Basics - Anfänger-Themen 3
M Probleme beim Datei auslesen Java Basics - Anfänger-Themen 6
M Probleme beim Compileren Java Basics - Anfänger-Themen 29
I Probleme beim ausführen des Programms Java Basics - Anfänger-Themen 6
kulturfenster Probleme beim Erstellen von Objekten Java Basics - Anfänger-Themen 15
kulturfenster Probleme beim Zeichnen einer Geraden Java Basics - Anfänger-Themen 8
S Probleme beim Java Kompilieren + ausführen Java Basics - Anfänger-Themen 6
M probleme beim kompilieren / übersetzen ! Systemeinstellung ? Java Basics - Anfänger-Themen 5
I Probleme beim Ausführen von Anwendungen Java Basics - Anfänger-Themen 2
S Probleme mit Datentyp beim Einlesen Java Basics - Anfänger-Themen 4
I java - probleme beim complimieren Java Basics - Anfänger-Themen 4
L Probleme beim ersten JavaProgramm! Java Basics - Anfänger-Themen 4
P Probleme beim Exportieren einer jar datei Java Basics - Anfänger-Themen 8
M Probleme beim Strich(e) zwichen Java Basics - Anfänger-Themen 3
M Probleme beim Drucken Java Basics - Anfänger-Themen 4
M Probleme beim Zuweisen eines Arbeitsverzeichnis Java Basics - Anfänger-Themen 2
A Probleme beim char-Vergleich! Java Basics - Anfänger-Themen 9
G Probleme beim Compilieren Java Basics - Anfänger-Themen 6
J Probleme beim Vererben Java Basics - Anfänger-Themen 2
B Probleme beim Dateien auslesen Java Basics - Anfänger-Themen 12
C Probleme beim overloaden. Java Basics - Anfänger-Themen 2
W MouseListener Probleme beim Abfangen Java Basics - Anfänger-Themen 8
X probleme beim import Java Basics - Anfänger-Themen 3
S Probleme beim Füllen einer HashMap Java Basics - Anfänger-Themen 15
K Probleme beim Einstieg Java Basics - Anfänger-Themen 2
I Probleme beim Ansprechen eines Arrays Java Basics - Anfänger-Themen 12
T Probleme beim Einlesen eines Strings Java Basics - Anfänger-Themen 3
K Neuronales Netz in Java und Probleme beim Konfigurieren Java Basics - Anfänger-Themen 2
N Probleme beim generieren von Objekten Java Basics - Anfänger-Themen 2
G Unknown Source Probleme beim Starten des Prgramms Java Basics - Anfänger-Themen 2
J probleme beim wieder aufruf Java Basics - Anfänger-Themen 2
J Probleme beim Erstellen eines Programms Java Basics - Anfänger-Themen 5
D Rekursions Probleme / frage Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben