# Aus Textdatei jede Zeile in einen String lesen



## NexXor (18. Dez 2007)

Hallo!

Also ich habe ein Problem, ich speichere Daten in .dat Dateien ab. Es ist reiner Text der reingeschrieben wird. Für jedes jTextField wird der Text ausgelesen und in der Datei gespeichert. So sieht das dann zum Beispiel in der Datei aus:

1
Cisco
Netzwerkkarte

Nun möchte ich aber diesen Text wieder einlesen können, also jede Zeile in der Datei (sind so 13 Zeilen) in einen separaten String lesen. Also ich habe dann 13 Strings, im String 1 ist die erste Zeile im String 2 die zweite usw. Jedoch komme ich nicht weiter, folgenden Code habe ich:



```
int zaehler = 1;
String text1;

BufferedReader f;
String line;

        

try {
f = new BufferedReader (new FileReader("C:\\1.dat"));

while (
(line = f.readLine()) != null)

if (zaehler == 1) {
text1 = line;
jTextField1.setText(text1);
zaehler ++;
}

//Hier kommen dann noch mehr ifs, also für jede Zeile ein IF,
//zum Beispiel so:
//if (zaehler == 2) {
//text2 = line;
//jTextField2.setText(text2);
//zaehler ++;
//}

			
f.close();
} catch
(FileNotFoundException e)
{
jOptionPane1.showMessageDialog(jOptionPane1, "Die angegebene Datei existiert nicht!", "Fehler!", jOptionPane1.ERROR_MESSAGE);
}
        
catch (IOException z)
{
jOptionPane1.showMessageDialog(jOptionPane1, "Es ist ein Fehler aufgetreten!", "Fehler!", jOptionPane1.ERROR_MESSAGE);
}
```

Leider funktioniert es nicht wirklich. Ich hoffe ihr könnt mir helfen.


----------



## P3AC3MAK3R (18. Dez 2007)

Beschäftige Dich einmal mit dem Thema Arrays.


----------



## ARadauer (18. Dez 2007)

bzw ArrayLists


```
ArrayList<String> list = new ArrayList();
...
list.add(line);
...
```


----------



## eldios (18. Dez 2007)

mist zu lahm das wollte ich doch auch vorshclagen


----------



## mimo (18. Dez 2007)

Also ich verpacke die einzelnen Spalten(String[])  in einem Vector.

Gruß

MIMO


----------



## NexXor (18. Dez 2007)

Aha, und wenn ich den Text (also line) in das Array eingefügt habe, ist doch alles auf einem einzigen "Speicherort" im Array oder? Also auf der Position 0. Oder liege ich da falsch?


----------



## EOB (18. Dez 2007)

na ja, du solltest schon den index vorwärts zählen ...aber bei ner arraylist wäre es nicht so. warum bestehst du denn auf ein array, was sind die vorteile deine meinung nach?

eob


----------



## Leroy42 (18. Dez 2007)

Du mußt deine JTextFields natürlich auch in einen Array packen,
damit du sie in einer Schleife, über die Zeilen der Datei, füllen kannst.


----------



## Guest (18. Dez 2007)

Also ich will ja eigentlich nur jede einzelne Zeile in einen separaten String packen, da ich die dann ganz einfach per


```
jTextField1.setText(text1);
```

einfügen kann  :shock:.
Das heisst es sind 13 Zeilen, und jede Zeile kommt in ein String, das heisst ich habe dann 13 Strings und die fülle ich dann in die textFields.


----------



## Leroy42 (18. Dez 2007)

```
JTextField[] jTextFields = new JTextField[13];
for (int idx=0; idx<13; idx++) {
    jTextFields[idx] = new JTextField();
    // Das TextField zu deinem JPanel adden
}
...
try { 
 f = new BufferedReader (new FileReader("C:\\1.dat")); 

    for (int idx=0; idx<13; idx++)
        jTextField[idx].setText(f.readLine());
}
```


----------



## Gast (18. Dez 2007)

```
int zaehler = 1;
String text;

BufferedReader f;
String line; 

try {
f = new BufferedReader (new FileReader("C:\\1.dat"));

while ((line = f.readLine()) != null)

text = line;
jTextField[zaehler].setText(text);
zaehler ++;
       
f.close();
} catch
(FileNotFoundException e)
{
jOptionPane1.showMessageDialog(jOptionPane1, "Die angegebene Datei existiert nicht!", "Fehler!", jOptionPane1.ERROR_MESSAGE);
}
       
catch (IOException z)
{
jOptionPane1.showMessageDialog(jOptionPane1, "Es ist ein Fehler aufgetreten!", "Fehler!", jOptionPane1.ERROR_MESSAGE);
}
```


----------



## NexXor (18. Dez 2007)

Hmmm....ok aber beim ersten Teil des Codes komme ich nicht so draus:


```
JTextField[] jTextFields = new JTextField[13];
for (int idx=0; idx<13; idx++) {
    jTextFields[idx] = new JTextField();
    // Das TextField zu deinem JPanel adden
}
```

Was macht man da genau?


----------



## EOB (18. Dez 2007)

Was hat das jetzt damit zu tun, eine textdatei in ein array einzulesen?

grüße
eob


----------



## NexXor (18. Dez 2007)

Also wie gesagt, ich will nur meine 13 Zeilen in 13 verschiedenen Strings haben, nichts weiter  ???:L


----------



## EOB (18. Dez 2007)

dann poste mal einzeln, wie du die textdatei ausliest...was du da vorher gepostet hast, hat damit nix zu tun. da wird ein jtextfield array angelegt und dann eben 13 felder erzeugt.

grüße


----------



## Leroy42 (18. Dez 2007)

NexXor hat gesagt.:
			
		

> Was macht man da genau?



Ich weiß ja nicht, wie deine GUI aussieht.

```
// Das TextField zu deinem JPanel adden
```
==

```
myPanel.add(jTextFields[idx]);
```

(P.S.: Ich habe die Vermutung, daß wir hier alle
total aneinander vorbei reden.   )


----------



## NexXor (18. Dez 2007)

Also auf meinem GUI sind die jTextFields ja alle vorhanden. Ein jPanel habe ich nicht?


----------



## NexXor (18. Dez 2007)

Textdateiname: 1.dat

Inhalt:

1
Cisco
Netzwerkkarte
Eine normale Netzwerkkarte
5 Ports
12.5.2003
DHL
192.168.0.2
255.255.255.0
16.6.2006
Dortmund
20 Euro
true

So sieht das Ganze in der Datei aus.


----------



## Leroy42 (18. Dez 2007)

Also wenn deine GUI schon gegeben ist (jTextField1, jTextField2,...)
-- vermutlich mit einem GUI-Builder erzeugt? --- dann macht das
Einlesen in ein Array keinen Sinn.


```
f = new BufferedReader (new FileReader("C:\\1.dat"));
jTextField1.setText(f.readLine());
jTextField2.setText(f.readLine());
...
jTextField13.setText(f.readLine());
```


----------



## NexXor (18. Dez 2007)

Ja das GUI habe ich in NetBeans schon realisiert. Das heisst die 13 jTextFields sind vorhanden.


----------



## Leroy42 (18. Dez 2007)

NexXor hat gesagt.:
			
		

> Also wie gesagt, ich will nur meine 13 Zeilen in 13 verschiedenen Strings haben, nichts weiter  ???:L



Das geht nur so:


```
String string1 = f.readLine();
String string2 = f.readLine();
...
String string13 = f.readLine();
```

Du kannst in (normalen) Programmiersprachen keine Variablen_namen_ dynamisch erzeugen.


----------



## NexXor (18. Dez 2007)

OK, vielen Dank, es funktioniert!


----------



## EOB (18. Dez 2007)

na also


----------

