Datei einlesen, Wörter splitten, in Objekt ablegen

Julius

Mitglied
Hi,

ich würde gerne eine Datei einlesen und die einzelnen Felder per "split" teilen.
Dann ergeben sich jede Menge verschiedener Wörter.
Diese Wörter sollen dann mit Hilfe von settern in Objekten abgelegt werden können.

Der Code für das Einlesen funktioniert soweit.


Java:
	 public void dateiEinlesen(String file) 
	 {
		    FileReader myFile = null;
		    BufferedReader buff = null;
		    final ArrayList<String[]> lines = new ArrayList<String[]>();
		 
		    try 
		    {
		        myFile = new FileReader(file);
		        buff = new BufferedReader(myFile);
		        String zeile;
		        while ((zeile = buff.readLine()) != null) 
		        {
                // Hier würde ich gerne die Wörter direkt in einem  Objekt ablegen können
               // z.B. customer.setName(erstes eingelesenes Wort) 
              // und dann am Ende in die Liste speichern lines.add(customer)	 
		            lines.add(zeile.split(";")); 
		        }
		    } 
		    catch (IOException e)
		    {
		        e.printStackTrace();	
		    }

	 }
 

genodeftest

Erfahrenes Mitglied
Schau dir doch mal die Klasse Scanner an, die tut genau das und ist für deinen Fall besser geeignet. Und pass auf, String.split interpretiert deine Eingabe als Regex (ist in diesem Fall nicht schlimm, aber sobald du \, * oder ? verwendest, bekommst du unerwartete Ergebnisse.
 

j2se

Erfahrenes Mitglied
oder ohne Klasse Scanner:

Code:
		FileReader myFile = null;
		BufferedReader buff = null;
		final ArrayList<String> words = new ArrayList<String>();

		try {
			myFile = new FileReader(file);
			buff = new BufferedReader(myFile);
			String zeile;
			while ((zeile = buff.readLine()) != null) {
				for (String s : zeile.split(" ")) {
					words.add(s);
				}
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
 

HonniCilest

Erfahrenes Mitglied
j2se bitte verwende Java-Tags für Java Code!

Diese Wörter sollen dann mit Hilfe von settern in Objekten abgelegt werden können.

Ich vermute es handelt sich um ein selbst definiertes Objekt (Class)? In diesem Fall würde ich zu einem Konstruktor raten in der Form (Beispiel:Customer):

Java:
 public void dateiEinlesen(String file) 
     {
            FileReader myFile = null;
            BufferedReader buff = null;
            final ArrayList<Customer> lines = new ArrayList<Customer>();
         
            try 
            {
                myFile = new FileReader(file);
                buff = new BufferedReader(myFile);
                String zeile;
                while ((zeile = buff.readLine()) != null) 
                {
                    lines.add(new Customer(zeile.split(";"))); 
                }
            } 
            catch (IOException e)
            {
                e.printStackTrace();    
            }
 
     }

Im Konstruktor kannst du die ganzen Eigenschaften gut "setten" und Fehlerhandling ausführen.
 

Julius

Mitglied
Danke Leute.
Habe es allerdings jetzt mit einem mehrdimensionalem Array gelöst.
Ist zwar nicht ganz so schön, aber bin alleine drauf gekommen :D