csv Datei auslesen

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo!

Ich habe ein Problem beim Auslesen einer CSV-Datei. Folgendes ist zu machen. Die CSV-Datei besteht aus 6 Feldern. Diese sind ID;Organisation;Land;Adresse;PLZ;Standplatz
Jede dieser Zeilen soll in ein Objekt abgespeichert werden.

Nun mein Problem. Mit split() teile ich die Zeilen in die entsprechenden Felder aufgeteilt. Nur wenn ich die Zeilen durchlaufe bekomme ich immer eine ArrayOutofBounds Exception. Das verwunderliche ist das das nicht immer in der gleichenZeile passiert. Ach noch zur Info. Die Zeilen in dem CSV-File sind nicht immer vollständig, dh. es sind felder leer.

Hier ist die MEthode die zum Auslesen der Zeilen und aufteilung ist.

Code:
public DBEntry[] getEntryArray() {
    int lines = getLines();
    

    DBEntry[] result = new DBEntry[lines];

    FileInput fi = new FileInput(filename_);

    for (String line; (line = fi.readLine()) != null; ) {
      String[] sp = line.split(";");
      
      for(int j = 0; j<sp.length; j++) {
        if(sp[j] == "") {
          sp[j] = "empty";
        }
      }
      System.out.println(sp[0]); // Ausgabe ID
      System.out.println(sp[1]); // Ausgabe Organisation
      System.out.println(sp[2]); // Ausgabe Land
      System.out.println(sp[3]); // Ausgabe Adresse
      System.out.println(sp[4]); // Ausgabe zip
      System.out.println(sp[5]); // Ausgabe Stand
      System.out.println("---------------------------------------");

      //System.out.println(line);

    }
    //System.out.println("Die Datei hat " + lines +" Zeilen");


    return result;
  }

Ich hoffe der Code reicht sonst melden und ich poste den gesamten Code.

Gruß
Christian
 
B

bygones

Gast
Code:
for(int j = 0; j<sp.length; j++) { 
        if(sp[j] == "") { 
          sp[j] = "empty"; 
        }
String vergleicht man nicht mit == sonder mit equals !!

außerdem, wie ist es wenn Felder "leer" sind, sind die dann dennoch korrekt mit ; getrennt ?

Also so
F1;F2;;F3;F4;;F6

wenn nicht dann hast du natürlich nicht immer einen Array der länge 6 und somit würdest du auf indizes zugreifen, die nicht existieren....
 

Eminent

Bekanntes Mitglied
deathbyaclown hat gesagt.:
Code:
for(int j = 0; j<sp.length; j++) { 
        if(sp[j] == "") { 
          sp[j] = "empty"; 
        }
String vergleicht man nicht mit == sonder mit equals !!

Oh man mal wieder was ganz offensichtliches überlesen :###
 
G

Guest

Gast
Eminent hat gesagt.:
Poste doch mal wo die Fehlermeldung kommt. (Welche Zeile von deinem Code)

Klasse DBReader

Code:
package oopTask01;

/**
 * 

Title: OOP Task 01</p>
 *
 * 

Description: Sort and Search</p>
 *
 * 

Copyright: Copyright (c) 2006</p>
 *
 * 

Company: Objectoriented Implementation of Algorithms and Data
 * Structures</p>
 *
 * @author unbekannt
 * @version 1.0
 */

// IMPORTE
import java.io.FileNotFoundException;
import java.io.FileInputStream;
import oop.io.FileInput;
import java.util.ArrayList;
import java.util.StringTokenizer;

public class DBReader {
  private String filename_;
  private ArrayList arrList = null;

  /**
   * Diese Klasse öffnet ein gewünschtes File und überprüft ob die Datei auch existiert.
   * @param filename String
   * @throws FileNotFoundException
   */
  public DBReader(String filename) throws java.io.FileNotFoundException {

    this.filename_ = filename;

    FileInput fi;
    fi = new FileInput(filename);
    if (fi.getStatus() == 3) {

      throw new FileNotFoundException();
    }
    fi.close();

  }

  /**
   * Liest die Datendatei aus und erzeugt entsprechende DBEntry-Objekte
   * @return DBEntry[]
   */
  public DBEntry[] getEntryArray() {
    int lines = getLines();


    DBEntry[] result = new DBEntry[lines];

    FileInput fi = new FileInput(filename_);

    for (String line; (line = fi.readLine()) != null; ) {
      String[] sp = line.split(";");

      for(int j = 0; j<sp.length; j++) {
        if(sp[j].equalsIgnoreCase("")) {
          sp[j] = "empty";
        }
      }
      System.out.println(sp[0]); // Ausgabe ID
      System.out.println(sp[1]); // Ausgabe Organisation
      System.out.println(sp[2]); // Ausgabe Land
      System.out.println(sp[3]); // Ausgabe Adresse
      System.out.println(sp[4]); // Ausgabe zip
      System.out.println(sp[5]); // Ausgabe Stand
      System.out.println("---------------------------------------");

      //System.out.println(line);

    }
    //System.out.println("Die Datei hat " + lines +" Zeilen");


    return result;
  }

  // Klasseninterne Methoden
  /**
   * Liefert die Anzahl der Zeilen der Datei zurück;
   * @return int
   */
  protected int getLines() {
    int result = 0;
    FileInput fi = new FileInput(filename_);
    for (String line; (line = fi.readLine()) != null; result++) {

    }
    fi.close();

    return result;
  }

}

Fehlermeldung:

Code:
102

atelier 47

Deutschland

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3

	at oopTask01.DBReader.getEntryArray(DBReader.java:70)

	at oopTask01.ApplicationTask01.main(ApplicationTask01.java:23)

Wenn die Felder leer sind werden sie korrekt getrennt --> F1;F2;;F3;F4;;F6.
Die Fehlermeldung kommt bei dieser Zeile --> 102;atelier 47;Deutschland;;;
Wie kann ich solche Zeilen bei der bearbeitung ignorieren? Gibt es da eine Möglichkeit?
 

Eminent

Bekanntes Mitglied
Pack doch deine Ausgabe auch mal in eine for-Schleife

Code:
for(int i = 0; i < sp.lenth; i++) {
   System.out.println(sp[i]);
}

So solltest du zumindest erstmal keine ArrayIndexOutOfBoundsException bekommen, da du auf jeden Fall nur die Länge des Arrays hast.
 
G

Gast

Gast
das problem ist das ich jeden einzelnen Wert einem Objekt zuordnen will und diese pro Zeile ein Objekt in ein Array packen will damit ich dann zum schluss sortieralgorithmen über dieses Array laufen lassen kann um die Objekte zu ordnen.

DBEntry(int i, String org, String addr, String country, String zip, String stand);

Hier werden die Daten der aufgeteilten Zeile benötigt. Deshalb funktioniert es mit einer for schleife nicht ganz. Das war auch der Grund warum ich jedes einzelne array element anzeigen hab lassen.
 

Eminent

Bekanntes Mitglied
Gast hat gesagt.:
das problem ist das ich jeden einzelnen Wert einem Objekt zuordnen will und diese pro Zeile ein Objekt in ein Array packen will damit ich dann zum schluss sortieralgorithmen über dieses Array laufen lassen kann um die Objekte zu ordnen.

DBEntry(int i, String org, String addr, String country, String zip, String stand);

Hier werden die Daten der aufgeteilten Zeile benötigt. Deshalb funktioniert es mit einer for schleife nicht ganz. Das war auch der Grund warum ich jedes einzelne array element anzeigen hab lassen.

Du hast doch auch in der Schleife deinen Zähler, der dir sagt das wievielte Objekt du hast (if i == 0) .... oder n Switch-Case tuts auch. Wie gesagt hast du bei der Schleife den Vorteil, dass du schon mal nicht über das Array hinaus abfragen kannst.
 

Murray

Top Contributor
Sollen die unvollständigen Sätze einfach ignoriert werden? Dann frag doch nach dem split die Länge ab:
Code:
for (String line; (line = fi.readLine()) != null; ) {
      String[] sp = line.split(";"); 
      if ( sp.length != 6) continue;

Wenn Du die Sätze aber verarbeiten willst, brauchst Du die Information, welche Fehler leer sind. In diesem Fall ist split() wohl nicht der richtige Ansatz.
 
G

Gast

Gast
Danke Leute für die Hilfe so funktioniert es nun.

Gruß
Christian
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Daten aus Import Datei auslesen und sortieren Java Basics - Anfänger-Themen 2
E TIF Datei auslesen Java Basics - Anfänger-Themen 2
sserio TXT-Datei Auslesen und den Wert jedes Namen ausrechnen etc. Java Basics - Anfänger-Themen 37
J Datei aus Netzwerk auslesen Java Basics - Anfänger-Themen 9
J Json Datei auslesen Java Basics - Anfänger-Themen 4
S CSV Datei auslesen und anders darstellen Java Basics - Anfänger-Themen 2
N Java CSV Datei auslesen Java Basics - Anfänger-Themen 6
J Datei auslesen (nur bestimmte Stellen) Java Basics - Anfänger-Themen 2
G If / While Programm (Datei auslesen) Java Basics - Anfänger-Themen 6
S Aus einer .bz2 Datei auslesen Java Basics - Anfänger-Themen 2
D Datei auslesen & Werte in Variable speichern Java Basics - Anfänger-Themen 12
B .txt. Datei auslesen und bestimmten Wert wiedergeben Java Basics - Anfänger-Themen 5
das_leon Alle Zeilen einer CSV-Datei auslesen Java Basics - Anfänger-Themen 1
T class Datei auslesen Java Java Basics - Anfänger-Themen 5
M Aus Datei auslesen und untersuchen ob diese Zeile schon vorhanden ist Java Basics - Anfänger-Themen 3
S Text aus einer HTML Datei auslesen Java Basics - Anfänger-Themen 1
B Datei auslesen und 2D-Array anlegen Java Basics - Anfänger-Themen 1
M Eigenschaften einer Datei auslesen Java Basics - Anfänger-Themen 5
Voreck Array aus txt datei auslesen Java Basics - Anfänger-Themen 2
OlafHD Datei Auslesen Java Basics - Anfänger-Themen 6
J Datei auslesen klappt nicht Java Basics - Anfänger-Themen 4
I Informationen aus XML Datei auslesen Java Basics - Anfänger-Themen 2
L Variablen aus TXT Datei auslesen und vergleichen. Java Basics - Anfänger-Themen 5
M Datei-Namen aus .jar auslesen Java Basics - Anfänger-Themen 7
L Java Text datei nur bis zu einem Punkt auslesen? Java Basics - Anfänger-Themen 3
T .jar Datei als Ordner benutzen/ Dateien aus .jar Datei auslesen Java Basics - Anfänger-Themen 3
B Datei zeilenweise auslesen Java Basics - Anfänger-Themen 7
J Zeilen aus einer .txt-Datei auslesen und Variablen zuweisen Java Basics - Anfänger-Themen 11
Traxter Cookie Datei auslesen Java Basics - Anfänger-Themen 4
B CSV-Datei auslesen, in Liste speichern und sortieren Java Basics - Anfänger-Themen 20
J Datensätze aus Txt Datei auslesen - Datensätze durch stöbern Java Basics - Anfänger-Themen 5
C auslesen bestimmter werte einer textdatei und anschl. hineinschreiben in eine neue txt-datei. Java Basics - Anfänger-Themen 2
N Bestimmte Zeile aus einer Datei auslesen Java Basics - Anfänger-Themen 10
R csv-Datei auslesen und ausgelesene Daten in neue csv-Datei speichern Java Basics - Anfänger-Themen 2
M Zahlen als Bytes in eine Datei speichern, daraus wieder auslesen Java Basics - Anfänger-Themen 2
L OOP Mit RandomAccesFile auslesen und in Datei schreiben Java Basics - Anfänger-Themen 8
F TextArea auslesen und in Datei speichern Java Basics - Anfänger-Themen 4
J Problem beim auslesen von Int Wert aus YML-Datei Java Basics - Anfänger-Themen 6
B Datei Auslesen + Schleife Java Basics - Anfänger-Themen 7
J Input/Output Daten in Datei schreiben und auslesen Java Basics - Anfänger-Themen 23
Y Datei mit relativem Dateipfad per FileReader aus .JAR heraus auslesen Java Basics - Anfänger-Themen 4
J Input/Output Datei auslesen, Pfad eingeben Java Basics - Anfänger-Themen 4
A HTML-Code auslesen und mit einem Wert in der property-Datei vergleichen Java Basics - Anfänger-Themen 2
Z Datei auslesen und in 2dim Array packen. Java Basics - Anfänger-Themen 27
E Text Datei Daten Auslesen und Schreiben Java Basics - Anfänger-Themen 3
P Properties Datei auslesen? Komfortabeler? Java Basics - Anfänger-Themen 2
K Mein Programm... Heute: Settings-Datei in .jar speichern und auslesen Java Basics - Anfänger-Themen 9
V Bestimmte Stellen aus .txt Datei auslesen Java Basics - Anfänger-Themen 11
Strahlungsleck Input/Output Zahlen aus Text-Datei auslesen Java Basics - Anfänger-Themen 6
R txt Datei auslesen Java Basics - Anfänger-Themen 3
R .log-Datei dauerhaft auslesen Java Basics - Anfänger-Themen 7
S Strings und Binärdaten aus der gleichen Datei auslesen Java Basics - Anfänger-Themen 24
V Datei in Ordner auslesen -> neuer Ordnername Java Basics - Anfänger-Themen 7
S Intwert aus einer txt.datei auslesen Java Basics - Anfänger-Themen 3
J Pfad bzw. Namen einer Datei auslesen Java Basics - Anfänger-Themen 6
C Arraylist in Txt Datei speichern und auslesen Java Basics - Anfänger-Themen 8
P mit java text-datei auslesen und weiter bearbeiten Java Basics - Anfänger-Themen 3
M Datei auslesen und Array schreiben?! Java Basics - Anfänger-Themen 8
M ständiges auslesen einer .txt datei Java Basics - Anfänger-Themen 2
J 2-dim Array auslesen und in Datei schreiben Java Basics - Anfänger-Themen 10
X Java txt datei auslesen Java Basics - Anfänger-Themen 10
M Sonderzeichen in einer Datei auslesen Java Basics - Anfänger-Themen 3
A Textdatei von URL auslesen und in Datei schreiben Java Basics - Anfänger-Themen 5
H Datei Byteweise mit wechselnden "Templates" auslesen Java Basics - Anfänger-Themen 2
Streeber Datei aus JAR auslesen Java Basics - Anfänger-Themen 3
B Datei auslesen Java Basics - Anfänger-Themen 2
G POI: Aus einer Datei auslesen und in eine andere Datei speichern Java Basics - Anfänger-Themen 18
manuakasam Datei auslesen - Geschwindigkeitsproblem Java Basics - Anfänger-Themen 2
C Zeilen aus einer Datei auslesen Java Basics - Anfänger-Themen 4
A Auslesen einer datei mit Scanner Java Basics - Anfänger-Themen 4
V Sequentielles Auslesen einer Datei Java Basics - Anfänger-Themen 7
T auslesen einer ini Datei Java Basics - Anfänger-Themen 13
G Datei blockweise auslesen Java Basics - Anfänger-Themen 6
Z Wie Datei effizient auslesen? Java Basics - Anfänger-Themen 1
M Auslesen einer Datei im Jar File Java Basics - Anfänger-Themen 5
T ArrayList in Datei speichern und auslesen Java Basics - Anfänger-Themen 7
J Datei auslesen und in Tabelle einfügen Java Basics - Anfänger-Themen 6
B kleine Probleme beim auslesen einer m3u Datei Java Basics - Anfänger-Themen 3
1 Zeit und Datum der Letzten Bearbeitung einer Datei auslesen Java Basics - Anfänger-Themen 3
P JSP - Daten aus externer Datei auslesen und anzeigen Java Basics - Anfänger-Themen 3
H2SO3- kompletten string aus datei auslesen (nicht .readline) Java Basics - Anfänger-Themen 21
O Text von Homepage via Java auslesen und in Text Datei speich Java Basics - Anfänger-Themen 1
T Bestimmte Zeile aus einer .txt-Datei auslesen? Java Basics - Anfänger-Themen 10
H Russische Zeichen in Datei schreiben und wieder auslesen Java Basics - Anfänger-Themen 3
H csv datei mit java auslesen und in konsole wiedergeben Java Basics - Anfänger-Themen 22
H Datei auslesen . Java Basics - Anfänger-Themen 33
M Probleme beim Datei auslesen Java Basics - Anfänger-Themen 6
N String/char-array aus datei auslesen Java Basics - Anfänger-Themen 2
S Text datei auslesen Java Basics - Anfänger-Themen 20
U Enumerationswerte aus XSD-Datei auslesen Java Basics - Anfänger-Themen 3
H Datei auslesen Java Basics - Anfänger-Themen 13
B String-Array in Datei speichern und wieder auslesen Java Basics - Anfänger-Themen 3
D Problem beim auslesen von txt datei. Java Basics - Anfänger-Themen 26
S Datei auslesen und neue schreiben (keine Textdatei) Java Basics - Anfänger-Themen 2
M Filesplitting - Teile einer Datei auslesen Java Basics - Anfänger-Themen 7
S ini Datei auslesen und in programm speichern Java Basics - Anfänger-Themen 2
J Datei aus unterschiedlichen Typen auslesen Java Basics - Anfänger-Themen 6
S Zahlen aus einer Datei auslesen Java Basics - Anfänger-Themen 11
C Probleme mit Auslesen einer Datei Java Basics - Anfänger-Themen 6
B Datei auslesen Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben