Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Du könntest den FileReader über einen BufferedReader (befindet sich auch in java.io.) zeilenweise einlese und diese Zeile dann nach dem Doppelpunkt splitten.
Durch das spltten bekommst du dann ja einen String Array, aus dem du dann den Name der Variable(Absender) und den Wert(test@test) 'holen' kannst.
x[0] wäre dann "Absender"
und x[1] wäre dann "test@test"
Und diese Strings haust du dann in eine Textfeld oder was auch immer.
Ne so richtig nicht, aber fast. Mach mal nen BufferdReader um den FileReader .
und dann immer String line = myBufferdReader.readLine(); nicht read()
(wenn das Datei ende erreicht ist gib die Methode null zurück.)
Und bei jedem Druchgang: String[] tmp = line.split(":");
Dann wäre tmp im ersten Durchgang {"Email", " test@test.de"}
und im Zweiten Durch gang {"Host", " 10.40.60.32"}
import java.io.*;
public class Test
{
public static void main(String[] args)
{
String TextfeldEmail;
String TextfeldHost;
BufferedReader b;
String line;
String[] tmp;
try
{
b = new BufferedReader(new FileReader("test.ini"));
while ((line = b.readLine()) != null)
{
tmp = line.split(":");
}
TextfeldEmail = tmp[1];
TextfeldHost = tmp[3];
b.close();
}
catch (IOException e)
{
System.out.println("Fehler beim Lesen der Datei");
}
}
}
1. Frage: Kann man das so machen mit "TextfeldEmail = tmp[1]; "
Weil irgendwie meckert er beim Compilieren, dass tmp nicht initialisiert sei, was ja falsch ist... s.o
2. Frage: Mit "TextfeldEmail = tmp[1]; " wird aber dann im Textfeld die mail Adresse erscheinen, also hingeschrieben richtig? (Dumme Frage, aber ich bin mir unsicher, ob es nur zugewiesen wird oder der Text auch erscheinen wird dort)
3. Frage: Kann man eine feste Anzahl an Zeichen für TextFelder bestimmen, wenn ja wie?
4. Frage: Wird es sonst so klappen?
1. Frage: Kann man das so machen mit "TextfeldEmail = tmp[1]; "
Weil irgendwie meckert er beim Compilieren, dass tmp nicht initialisiert sei, was ja falsch ist... s.o
Angenommen deine while-Schleife wird nie betreten, dann ist tmp eben NICHT initialisiert.
2. Frage: Mit "TextfeldEmail = tmp[1]; " wird aber dann im Textfeld die mail Adresse erscheinen, also hingeschrieben richtig? (Dumme Frage, aber ich bin mir unsicher, ob es nur zugewiesen wird oder der Text auch erscheinen wird dort)
Zu Frage 1: Und wie kann ich es richtig initialisieren?
Zu Frage 3: Ich meine, ein Textfeld kann eine bestimmte Grösse haben, sagen wir 20. Es heißt aber noch lange nicht, dass max. 20 Zeichen rein passen. Jetzt möchte ich z.B die Anzahl der Zeichen die eingegeben werden können auf 10 limitieren, mehr kann nicht eingegeben werden. Wie mache ist das?
@Wildcard: Es hat mit diesem Code nix zu tun, ist eine generelle Frage für ein Textfeld in einem Applet (Swing). :wink: Es gibt zwar JFormattedTextField, aber kann ich damit auch festlegen wieviele Zeichen "benutzt" werden dürfen?
import java.io.*;
public class Test
{
public static void main(String[] args)
{
String TextfeldEmail;
String TextfeldHost;
BufferedReader b;
String line;
String[] tmp = null;
try
{
File Data = new File("C:/Data.ini");
b = new BufferedReader(new InputStreamReader(new FileInputStream(Data)));
while ((line = b.readLine()) != null)
{
tmp = line.split(":");
System.out.println(line);
}
TextfeldEmail = tmp[1];
TextfeldHost = tmp[3];
b.close();
}
catch (IOException e)
{
System.out.println("Fehler beim Lesen der Datei");
}
}
}
Wenn System.out.println(line); in der while Schleife, dann gibt das Programm:
EmailFrom: test@test.com
Host: 11.11.11.11
java.lang.ArrayIndexOutOfBoundsException: 3
at Test.main(Test.java:24)
Exception in thread "main"
Wenn System.out.println(tmp); in der while Schleife, dann gibt das Programm:
[Ljava.lang.String;@1cde100
[Ljava.lang.String;@16f0472
java.lang.ArrayIndexOutOfBoundsException: 3
at Test.main(Test.java:23)
Exception in thread "main"
Wenn System.out.println(tmp[1]); in der while Schleife, dann gibt das Programm: test@test.com
11.11.11.11
java.lang.ArrayIndexOutOfBoundsException: 3
at Test.main(Test.java:23)
Exception in thread "main"
Also eigentlich sollte er nur test@test.com rausgeben oder?
1. Wo ist noch der Fehler, der sollte doch nach dem ":" abschneiden und trennen und an verschiedene ArrayPositonen speichern oder?
2. Ich finde immer noch keine Lösung wie ich leicht die Anzahl an Zeichen in einem Textfeld (Array) festlegen kann.
aus? Sollte nicht nur EmailFrom ausgegeben werde, tmp[1] wäre test@test.com, tmp[2] Host usw...??
D.h bevor ich mein Array dem Textfeld zuweise, muss ich ihn speichern, in einer Variable während der while-Schleife? Eine Variable die alle Arrays speichert oder wie meinst du das? (Anhand Beispiel)
Damit dir mal klar wird was du hier eigentlich machst:
Du liest eine Datei zeilenweise aus, und splittest die Zeile dann beim ':'
Wenn deine Datei so aussieht:
EmailFrom: test@test.com
Host: 11.11.11.11
hat tmp nach dem ersten Schleifendurchlauf also folgenden Inhalt:
tmp[0]=EmailFrom
tmp[1]= test@test.com
dann kommt der nächst Schleifendurchlauf und du weist tmp ein neues Array zu.
Neuer Inhalt
tmp[0]= Host
tmp[1]= 11.11.11.11
warum willst du dann so hartnäckig auf tmp[3] zugreifen wenn's das niemals geben wird?
Mein Problem ist halt folgendes: ich habe ja mehrere Textfelder im Applet. Sagen wir 2 wie in meinem Beispiel.
Das erste Textfeld heißt TextfeldEmail, dort muss tmp[1] von ersten Lauf gespeichert werden.
Das zweite Textfeld heißt TextfeldHost, dort muss tmp[1] von zweiten Lauf gespeichert werden.
So wie kriege ich das hin? Eine for-Schleife in der while-Schleife?
Code:
while ((line = b.readLine()) != null)
{
tmp = line.split(":");
for (int i=0; i<=tmp.length; i++)
save = tmp[i];
}
b.close();
Und nun wie weise ich meine Textfelder den String zu?
eingebe, (das sop dient nur um zu sehen was er normal in AusgabeEmail und AusgabeHost speichern würde) erscheint
AusgabeEmail= test@test.com
AusgabeHost= test@test.com
AusgabeEmail= 11.11.11.11
AusgabeHost= 11.11.11.11
Eigentlich sollte aber bei AusgabeEmail nur test@test.com und bei AusgabeHost nur 11.11.11.11 erscheinen.
Aber das Prog. macht es doppelt weil es die ganze Schleife durchgeht.
dann soll das Prog an Stelle AusgabeEmail nur die Email speichern und nicht die Host Nummer und in zweiten Durchlauf an Stelle AusgabeHost nur die Host Nummer.
Die Schleife geht doch immer alles durch, wie man kann das festsetzen? ???:L