CSV in String

Bitte aktiviere JavaScript!
Hallo,

in folgendem Code habe ich einen JFileChooser implementiert, mit dem ich eine CSV-Datei irgendwo auf dem Rechner auswähle. Diese CSV Datei wird momentan ausgelesen und per SysOut auf der Konsole ausgegeben. Ich möchte jetzt gerne die Daten die in der CSV stehen, in Strings speichern. Ich habe nur leider absolut keine Ahnung wie das gehen soll.



Hier ein Ausgabenteil der CSV:
...
[WWI 1;Wismar Est;Est;]
[WWI B;Wismar Bf/Sev;Bush;]
[WWI D;Wismar-Dargetzow/II.Wendung;Bush;]
[WWI Z;Wismar ZOB Dr.-Leber-Straße;Bush;]
[WWIA;Wismar Hafen Seeausfuhr;Bf;]
[WWIH;Wismar Hafen;Bf;]
[WWIL;Bad Wilsnack;Bf;]
...



Hier der Code:


Java:
import javax.swing.JFileChooser;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class CSVImport {
   
   
    public static void importer() throws IOException {
       
        final List<String> lines = new ArrayList<String>();
       
        // JFileChooser-Objekt erstellen
        JFileChooser chooser = new JFileChooser();
       
        // Dialog zum Oeffnen von Dateien anzeigen
        chooser.showOpenDialog(null);
        File selectedFile = chooser.getSelectedFile().getAbsoluteFile();
        try {
            BufferedReader buff = new BufferedReader(new FileReader(selectedFile));
           

            String line;
           
           
            while ((line = buff.readLine()) != null) {
                System.out.println(line); // kontrolle was eingelesen

                lines.add(line);
            }
        } catch (FileNotFoundException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
       
       


                final String[][] valuesArray = new String[lines.size()][];
                int cnt = 0;
                for (final String line : lines) {
                    valuesArray[cnt++] = line.split(",");
                }

               
                // Ausgabe des Array
                for (String[] arr : valuesArray) {
                    System.out.println(Arrays.toString(arr));
                }
            }
   
   
       

       
       
   

}
 
Zuletzt bearbeitet:
A

Anzeige




Vielleicht hilft dir unser Kurs hier weiter —> (hier klicken)
Hi,

Möglichkeiten dies zu lösen sehe ich viele.

Schau Dir doch einmal die Klasse String im Detail an: https://docs.oracle.com/javase/7/docs/api/java/lang/String.html
Du kannst z.B. den String selbst zerlegen mit String.split.

Eine andere Möglichkeit wäre, Dich etwas mehr in die regulären Ausdrücke einzulesen. Das ist dann ein sehr mächtiges Werkzeug, welches mit relativ wenig Code sehr viel schafft. Aber das ist dadurch auch deutlich schwerer zu lernen.

Was aber natürlich auch geht ist die Nutzung einer anderen Library, welche csv Dateien einlesen kann.

Viele Grüße,

Konrad
 
Das solltest du auf jeden Fall nicht tun. Für die Daten solltest du eine eigene Klasse anlegen.
Ich wollte die Daten in eine Art Pool-Klasse speichern, damit andere Klasse auch Zugriff darauf haben. In der CSV Klasse sollen die abgefangen und ins Pool gepackt werden.




Hi,

Möglichkeiten dies zu lösen sehe ich viele.

Schau Dir doch einmal die Klasse String im Detail an: https://docs.oracle.com/javase/7/docs/api/java/lang/String.html
Du kannst z.B. den String selbst zerlegen mit String.split.


Eine andere Möglichkeit wäre, Dich etwas mehr in die regulären Ausdrücke einzulesen. Das ist dann ein sehr mächtiges Werkzeug, welches mit relativ wenig Code sehr viel schafft. Aber das ist dadurch auch deutlich schwerer zu lernen.

Was aber natürlich auch geht ist die Nutzung einer anderen Library, welche csv Dateien einlesen kann.

Viele Grüße,

Konrad

Danke für den Tipp. Da ich unter Zeitdruck stehe bräuchte ich die schnellere oder einfachere Möglichkeit.


Danke
 
Ich wollte die Daten in eine Art Pool-Klasse speichern, damit andere Klasse auch Zugriff darauf haben. In der CSV Klasse sollen die abgefangen und ins Pool gepackt werden.
Das hat so ziemlich gar nichts mit der Antwort von @Robat zu tun. Was du mit den Daten machst ist völlig egal, die in einer eigenen Kasse abbilden solltest du in jedem Fall.

Danke für den Tipp. Da ich unter Zeitdruck stehe bräuchte ich die schnellere oder einfachere Möglichkeit.
Eine einfachere und schnellere Möglichkeit als die genannten gibt es nicht.

Nimm einen der existierenden CSV-Reader, zb OpenCSV, das erspart dir im Gegensatz zum händischen parsen einige Fallstricke.
 
Danke erstmal.
Ich bin leider kein Experte was Java betrifft. Habe mich zwar immer wieder mal mit Java beschäftigt, aber viel Wissen bringe ich leider nicht mit.

Ich habe jetzt OpenCSV in Eclipse in meinen Projektordner eingefügt.
Doofe Frage, aber wie kann ich die ganzen Klassen die in der .jar sind jetzt nutzen? Wenn ich diese anklicke kommt nur Source not found bei raus. Sind das Methoden, die ich in meinem Projekt aufrufen kann, oder was genau muss ich anstellen?

Sry mache das zum ersten Mal und es ist schon spät o_O
 
Wenn ich diese anklicke kommt nur Source not found bei raus. Sind das Methoden, die ich in meinem Projekt aufrufen kann, oder was genau muss ich anstellen?
Du willst ja auch nicht den Quellcode ansehen, sondern die Klassen nur verwenden. Du brauchst entsprechende import-Anweisungen. Die können von der IDE (halb)automatisch gesetzt werden: mittels Code-Completion ("Intellisense") oder kontextunabhängig mit einer Funktion (organize imports).
 
Passende Stellenanzeigen aus deiner Region:

Oben