# Daten aus einer Textdatei in ArrayList holen



## JonnieWalker (19. Apr 2010)

Hallo Leute.
ich habe eine Methode geschrieben die Mir Datensätze aus einer Datenbank holt und sie mir in einer ArrayList anzeigt.Das funktioniert soweit ganz okej.

Mit dieser Methode, die ihr seht schreib ich diese Liste als txt einfach in ein ordner und Festplatte meiner wahl ab.

```
public void StoppExportieren() {

        String tfTabelleAbsp = FensterStoppExp.tfTabelleAbsp.getText();
        BufferedWriter datei = null;
        try {
            String file = tfTabelleAbsp + ".txt";
            datei = new BufferedWriter(new FileWriter(file));
            for (int i = 0; i < retStoppWords.size(); i++) {
                datei.write(retStoppWords.get(i).toString());
                datei.newLine();
            }
        } catch (Exception ex) {
        } finally {
            try {
                datei.close();
            } catch (Exception ex) {
            }

        }

    }
```

Ich würde das jetzt gerne so realiesieren, dass wenn ich meinen Button Liste importieren klicke,
er mir diese ArrayListe die ja als txt abgespeichert ist wieder in meiner ArrayListe anzeigt.

Wie mach ich das?


----------



## Gast2 (19. Apr 2010)

Textdatei zeilenweise einlesen, pro Zeile eingelesenen String in die ArrayList schreiben?


----------



## JonnieWalker (19. Apr 2010)

ok und wie mach ich das genau???
mit so nem BufferedReader oder?


----------



## ARadauer (19. Apr 2010)

ja


----------



## JonnieWalker (19. Apr 2010)

Also ich hab jetzt diese Methode geschrieben.
Sie soll mir die Datei holen und dann auslesen:


```
public void StoppImport() {

        String TabellenName = FensterStoppListe.TabellenName.getText();
        BufferedReader datei = null;
        try {
            String file = TabellenName;
            datei = new BufferedReader(new FileReader(file));
            String Zeile = "";
            while(!(Zeile == null)){
                Zeile = datei.readLine();
            if(!(Zeile == null)){
                }
            }
            datei.close();

        } catch (Exception ex) {
        }

        }

    }
```

Das Problem ist ich gebe Mein Quellpfad ein und drücke auf den Button importieren.
Dann soll er mir das in der ArrayList anzeigen.

Die Aktion für die ArrayList sieht so aus:
Die muss doch geändert werden, aber wie sag ich ihm das er das jetzt machten soll?


```
FensterStoppwort.jListStopp.setListData(db.retListe.toArray());
```


----------



## Michael... (19. Apr 2010)

Du musst ja das was Du einliest auch in einem Objekt speichern (z.B. in einer ArrayList). Es bringt ja nichts, wenn Du das Eingelesene wieder verwirfst.

```
ArrayList<String> list = new ArrayList<String>();
String line;
while ((line = datei.readLine()) != null)
	list.add(line);
```


----------



## JonnieWalker (19. Apr 2010)

Also dein Quelltext ist jetzt für die Methode nicht für den Button?
Oder soll ich das doch im Button machen?


----------



## JonnieWalker (19. Apr 2010)

Ich habe die Methode von eben etwas geändert wie du gesagt hast.

DATENBANKKLASSE
Hier die dekleration der ArrayListe:

```
ArrayList<String> list = new ArrayList<String>();
```

Hier die Methode von eben aber geändert:

```
public void StoppImport() {

        String TabellenName = FensterStoppListe.TabellenName.getText();
        BufferedReader datei = null;
        try {
            String file = TabellenName;
            datei = new BufferedReader(new FileReader(file));
            String line;
            while ((line = datei.readLine()) != null){
            list.add(line);
            if(!(line == null)){
                System.out.println(line);
                }
            }
            datei.close();

        } catch (Exception ex) {
        }

        }

    }
```

Und hier meine FensterStoppwortKlasse wo auch die ArrayList ist die mir die Daten anzeigen soll:

```
db.StoppImport();
FensterStoppwort.jListStopp.setListData(db.list.toArray());
```


----------



## Michael... (19. Apr 2010)

Ich nehme mal an, es funktioniert noch nicht so ganz?

Das mit der ArrayList<String> war nur als Bsp. eventuell benötigst Du ja ArrayList<Words> - kenne ja den Zusammenhang nicht.

Ausserdem solltest Du Dir angewöhnen die catch Blöcke nicht leer zu lassen, sondern die Fehlermeldungen per printStackTrace() auszugeben. Sonst suchst Du Dich im Falle eines Falles zu Tode.
Auch der direkte Zugriff auf Variablen ist nicht gerade schön --> mehr mit get und set Methode arbeiten bzw. Objekte direkt über die Methode zurück geben.


----------



## JonnieWalker (19. Apr 2010)

Hi, es funktioniert super
Dankeschön!


----------

