csv-Datei in einen Array einlesen

Menelao

Grünschnabel
Hallo Zusammen.
Befasse mich seit "kurzem" mit Java. Da die "Textbook-Übungen" recht gut klappten, wagte ich mich etwas eigenes zu schreiben.

Ich versuche eine cvs-Datei mit Java einzulesen mit dem Inhalt:
S;2;3;4
B;2;3;7
C;4;0;8
D;0;5;3

Das Einlesen der Datei in eine Arraylist klappt schon mal.
Als nächster Schritt hab mit VARIABEL.split(";") versucht die einzelnen Elemente der Liste zu isolieren.
Als letzter Schritt das Umwandeln der Arraylist in einen Array mit VARIABLE.toArray().

Doch irgendwo steckt der Wurm drin. Ich vermute entweder beim Splitten oder beim Umwandeln. (?)
Ich hab ein Googled und meine Skript mit anderen verglichen, doch sehe ich meinen Fehler nicht.

Vielen Dank für Eure Bemühungen

Anbei meinen Quellcode:
Code:
import java.awt.*;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;

public class VersuchEinlesen {

	public static void main(String[] args) {
		
		 // Einlesen des Files und spliten
		 FileReader myFile= null;
		 BufferedReader buff= null;
		 ArrayList values = new ArrayList();
		 String [] valuesSplited;
		 
			try {
				myFile =new FileReader("zahlen.csv");
				buff =new BufferedReader(myFile);
				while (true) {				
					String line = buff.readLine();
					if (line == null)
						break;
					values.add(line);
					System.out.println (line); //kontrolle was eingelesen					
					valuesSplited = line.split(","); // Spliten nach dem Sonderzeichen ","
				}
			} catch (IOException e) {
				System.err.println("Error2 :"+e);
			}finally {
				try{
					buff.close();
					myFile.close();
				}catch (IOException e) {
				System.err.println("Error2 :"+e);
				}
			
		// Umwandeln in Array
				Object valuesArray[][]= valuesSplited.toArray(); //Umwandeln in Array
				//Ausgabe des Array
				for ( int i= 0 ; i < valuesArray.length; i++ )
			    	{for (int j=0; j< valuesArray[i].length; ++j) {
		            System.out.print(valuesArray[i][j]);
			    	}}
			
				
			}
	}
}
 

zeja

Erfahrenes Mitglied
Warum schreibst du nicht das valuesSplited in deine ArrayList?

Geh einfach alles noch mal Zeile für Zeile durch und überlege dir was du da tust. So wird es nicht mal kompilieren.
 

Menelao

Grünschnabel
Hallo Zeja,
Sehe nicht ganz was du meinst mit dem valuesSplited in deine ArrayList zu schreiben.

Stimmt in dieser Form kann ich den Code nicht kompilieren. "Eclipse" stört sich an der toArray-Zeile, und daher an dem ganzen Abschnitt wo die ArrayList zu einem Array umgewandelt werden sollte. Dies ist der Grund weshalb ich annehme, dass der Fehler entweder beim Splitten oder bei der Umwandlung liegt.

Komme echt nicht selber drauf sorry.
 

zeja

Erfahrenes Mitglied
Du versuchst ja auch auf valuesSplited ein toArray zu machen. Das ist aber ein String[].

Java:
public static void main(String[] args) {

	// Einlesen des Files und spliten
	FileReader myFile = null;
	BufferedReader buff = null;
	final List<String> lines = new ArrayList<String>();

	try {
		myFile = new FileReader("zahlen.csv");
		buff = new BufferedReader(myFile);
		String line;
		while ((line = buff.readLine()) != null) {
			System.out.println(line); // kontrolle was eingelesen

			lines.add(line);
		}
	} catch (IOException e) {
		System.err.println("Error2 :" + e);
	} finally {
		try {
			buff.close();
			myFile.close();
		} catch (IOException e) {
			System.err.println("Error2 :" + e);
		}
	}

	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));
	}
}
 

Menelao

Grünschnabel
Danke viel mals für die "Lösung".
Hab einwenig nachschlagen müssen umd die Lösung zu verstehen. Naja, hab halt noch ein wenig Weg vor mir, bis ich mich wirklich als Java-Programmierer bezeichnen kann :)
 

zeja

Erfahrenes Mitglied
Habe den Titel des Thread nochmal geändert damit man ihn wiederfindet. Es ging ja um CSV-Dateien und nicht um CVS-Dateien ;)