txt-Dateiinhalte einlesen und in JTextField anzeigen. Wie?

Status
Nicht offen für weitere Antworten.
M

madman

Gast
Hallo,

ich versuch mich grad durch Java zu kauen, was mir gerade eher mehr schlecht als recht gelingt. Ich hoffe das ihr mir helfen könnt.
Ich komm bei der folgenden Sache einfach nicht weiter.

Und zwar möchte ich eine Datei (Daten.txt) einlesen. Diese Datei enhält Elemente wie ("Mustermann", "Testdaten1", "TestZahl3" usw.). Den Elementen sind Abkürzungen mit Doppelpunkt vorangestellt (VN:).
Jedes einzelne Element soll nun in ein genau dafür vorgesehenes JTextField ausgeben werden.

Mustermann --> textFeldNN
Testdaten1--> textFeldD1
TestZahl3 --> textFeldZ3 ect.

Bisher ist es mir leider nur gelungen den kompletten Inhalt in einem Textfeld auszugeben.

Was muss ich an dem Code erweitern, damit ich anhand der Abkürzungen die Elemente den richtigen Textfeldern zuordnen kann?

Ich danke vielmals für eure Hilfe!

Gruß
Mike


------------------------------------------------------------------------------------------

Daten.txt:

Person=NN:Mustermann;VN:Michael;
Daten=D1:Testdaten1;D2:Testdaten2;D3:Testdaten3;
Zahlen=Z1:TestZahl1;Z2:TestZahl2;Z3:TestZahl3;
Sonstiges=S1:Sonstiges1;S2=Sonstiges2;



Code:
if (ae.getSource().equals(oeffnen)) {
			
			System.out.println("Menüpunkt Öffnen wurde geklickt");
			
			int arrlen = 10000;
			byte[] infile = new byte[arrlen];
			Frame parent = new Frame();
			FileDialog fd = new FileDialog(parent, "Datei auswählen",
			    FileDialog.LOAD);
			
			fd.setDirectory("C:\\Datei"); 
			fd.show();
			String selectedItem = fd.getFile();
			if (selectedItem == null) {
			
			} else {
				File ffile = new File( fd.getDirectory() + File.separator +
				                     fd.getFile());
				// read the file
				System.out.println("reading file " + fd.getDirectory() +
				                        File.separator + fd.getFile() );
				try {
					FileInputStream fis = new FileInputStream(ffile); 
					BufferedInputStream bis = new BufferedInputStream(fis);
					DataInputStream dis = new DataInputStream(bis);
					try {
						int filelength = dis.read(infile);
						String filestring = new String(infile, 0,
						                           filelength);
						
                                        System.out.println("Dateiinhalt=" + filestring);
                                         
				        textFeldNN.setText(filestring);

					} catch(IOException iox) {
						System.out.println("Fehler beim Lesen...");
						iox.printStackTrace();
					}
				} catch (FileNotFoundException fnf) {
					System.out.println("Datei nicht gefunden.");
					fnf.printStackTrace();
				}
			}		
		}
 
G

Gast

Gast
da gibt es mehrere Möglichkeiten.

Zum einen kann man die Datei Daten.txt Zeilenweise einlesen.

Code:
while(bufferedReader.ready){
String currentLine = br.readLine();
}
Hat man dann einzelne Zeilen, so kann man den Stringtokenizer darauf ansetzen z.B:
Code:
StringTokenizer st = new StringTokenizer(currentLine, "=");
if(st.nextToken().equals("Person")){
String personendaten = st.nextToken();
}
hat man nun den String personendaten im Beispiel NN:Mustermann;VN:Michael; so kann man darauf wieder den Stringtokenizer ansetzen. Diesmal gibt man als delimiter, Trennzeichen ; an anstatt = um das ganze aufzutrennen um später dann die daraus resultierenden Ergebnisse wiederum mit dem StringTokenizer und : als Trennzeichen aufzusplitten.
Der Rest sollte dann eigentlich recht trivial sein.
 
M

madman

Gast
hi,

danke erstmal für deine antwort. hat mich auf jeden fall ein stück weitergebracht. ich hab mal ausprobiert was du gesagt hast, aber irgendwie bekomm ich das ganze nicht so richtig hin.

hab jetzt den tokenizer auf die erste zeile angesetzt. aber irgendwie versteh ich nicht, wie ich auf jedes token nochmal zugreifen kann. Zum Beispiel : " personendaten:NN:Mustermann;VN:Michael; "
Wie schaffe ich es, dass ich das token als gesamtes betrachte, die semikolen raushau. dann die ergebnisse erneut getrennt betrachte (VN:Michael und NN:Mustermann) um hier dann "VN:" und "NN:" rauszuhauen.

Das was dann übrigbleibt (z.B. Michael) wird dann einem Textfeld zugeordnet.

hat du vielleicht ne idee? gibt es keine möglichkeit jede zeile einfach nach den Abkürzungen "NN:" bzw. "VN:" zu durchsuchen und die Zeichen bis zum Semikolon auszugeben? Dann wird die nächste Zeile durchsucht usw.

vielen dank.
gruß
mike


meine ausgabe sieht momentan so aus:

Menüpunkt Öffnen wurde geklickt
Lese Datei C:\\Daten.txt
gelesene Zeile:person=NN:Mustermann;VN:Michael;
personendaten:NN:Mustermann;VN:Michael;
Vorname:VN:Michael
gelesene Zeile:Daten=D1:Testdaten1;D2:Testdaten2;D3:Testdaten3;
gelesene Zeile:Zahlen=Z1:TestZahl1;Z2:TestZahl2;Z3:TestZahl3;
gelesene Zeile:Sonstiges=S1:Sonstiges1;S2=Sonstiges2;


Code:
	if (ae.getSource().equals(mi1)) {
	
	System.out.println("Menüpunkt Öffnen wurde geklickt");
	
	int arrlen = 10000;
	byte[] infile = new byte[arrlen];
	Frame parent = new Frame();
	FileDialog fd = new FileDialog(parent, "Datei auswählen",
	    FileDialog.LOAD);
	
	fd.setFile("*.TXT");
	fd.setDirectory("c:\\Datei"); 
	fd.show();
	String selectedItem = fd.getFile();
	if (selectedItem == null) {
	
	} else {
		File ffile = new File( fd.getDirectory() + File.separator +
		                     fd.getFile());
		System.out.println("Lese Datei " + fd.getDirectory() +
		                        File.separator + fd.getFile() );				
		try {

                      FileReader eingabeStrom = new FileReader(ffile);
                      BufferedReader eingabe = new BufferedReader(eingabeStrom);
			
			try {	
				String zeile;
				String daten;
				String dpunkt;
				String vn;
                  
				  //zeilenweises einlesen
				
                  while ((zeile = eingabe.readLine()) != null) {
	              System.out.println("gelesene Zeile:"+zeile);
	                                
	               StringTokenizer st = new StringTokenizer(zeile, "=");	
				
					if(st.nextToken().equals("Person")){
					
					daten = st.nextToken();
					System.out.println("personendaten:"+daten);
					
					st = new StringTokenizer(daten, ";");
					
					dpunkt = st.nextToken();
					System.out.println("Vorname:"+st.nextToken());
		
					}
				
				    }
				
				}
						
		 catch (IOException e) {
			e.printStackTrace();
		        }
		} catch (FileNotFoundException fnf) {
			System.out.println("Datei nicht gefunden...");
			fnf.printStackTrace();
		}
		
	}
 

Drake

Bekanntes Mitglied
Hallo

hier ein anderer möglicher Lösungsansatz:

Code:
int index1, index2;

if(zeile.startsWith("Person")) {	
		
		index1 = zeile.indexOf("NN:") + 3;
		index2 = zeile.indexOf(";", index1);
		String nn = zeile.substring(index1, index2);
		
		index1 = zeile.indexOf("VN:") + 3;
		index2 = zeile.indexOf(";", index1);
		String vn = zeile.substring(index1, index2);
		
		System.out.println(nn + ", " + vn);

}
else if(zeile.startsWith("Daten")) {	

}

else if(zeile.startsWith("Zahlen")) {	

}
else if(zeile.startsWith("Sonstiges")) {	

}

funktioniert so allerdings nur, wenn die Anzahl der Daten pro Datensatz fest ist
 

DP

Top Contributor
mit dem stringtokenizer biste schon gut dabei. kannste ja auf den token wieder nen stringtokenizer drüberziehen und das ganze so auseinandernehmen.

regex würde auch noch gehen.
 
M

madman

Gast
Hi Drake,

vielen Dank für deinen Lösungsansatz. Funktioniert mit 2 Datensaätzen wunderbar. Find ich eleganter als mit dem Stringtonkenizer. Ich muss aber leider gestehen, dass ich nicht versteh was

index1 = zeile.indexOf("NN:") + 3; bzw index2 = zeile.indexOf(";", index1);

bei der ganzen Sache machen. Was bedeutet + 3?
Ich hab versucht das ganze auf 5 Daten (sind fest) anzupassen, aber leider ohne Erfolg. Irgendwie steh ich auf dem Schlauch.

Wie müsste ich den if Block anpassen, damit bspw. 5 Daten pro Datensatz verarbeitet werden können?

Bspw:
Person=NN:Mustermann;VN:Michael;STR:Musterstrasse;HNR:34;PLZ:86123;

Vielen Dank.

Gruß
Mike
 

mikachu

Top Contributor
ich würde da eher myString.split( expression ); empfehlen!

Code:
String read = "Person=NN:Mustermann;VN:Michael;STR:Musterstrasse;HNR:34;PLZ:86123;"
String[] split1 = read.split( "=" );
// split1[0] ist "Person"
// split1[1] ist der rest nach dem "="
String[] split2 = split[1].split( ";" );
// split2[0] ist "NN:Mustermann"
// split2[1] ist "VN:Michael"
// usw
for( String splitted : split2 )
{
    String[] split3 = splitted.split( ":" );
    // split3[0] ist "NN"
    // split3[1] ist "Mustermann"
    // und hier die einträge dann in die Swing-komponente eintragen
}

und das halt für die ganze datei wiederholen -> deine while() schleife ;)
 

Drake

Bekanntes Mitglied
madman hat gesagt.:
index1 = zeile.indexOf("NN:") + 3; bzw index2 = zeile.indexOf(";", index1);

bei der ganzen Sache machen. Was bedeutet + 3

indexOf("NN:") gibt die Position zurück an dem der Teilstring "NN:" zum ersten mal auftaucht. Du willst aber die Daten nach diesem und da "NN:" 3 Zeichen lang ist + 3.

index2 wird auf die gleiche Art und Weise ermittelt, es wird nach dem ersten vorkommen des Teiltrings ";" gesucht, jedoch beginnt die Suche nicht am Anfang des ursprünglichen Strings, sondern erst ab der Position index1.

Mit diesen Infos sollte es keine Schwierigkeiten für dich darstellen, weitere Daten aus deiner Zeile zu extrahieren.

mfg
Drake

ps @ DP irgendwann bring ich deinen Käfer um, ich finde schon einen Weg , und sei es nur, dass ich meinem ff sage, er soll dieses Bild blockieren :bae:. Ich weiß nicht warum, aber es jagt mir immer wieder einen Schrecken ein
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Best Practice Dateiinhalte validieren und auf Objekte mappen Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
G JTree speichern und wieder einlesen Java Basics - Anfänger-Themen 5
T Text einlesen code was kommt dahin? Java Basics - Anfänger-Themen 1
S SeriellenPort einlesen Java Basics - Anfänger-Themen 3
I XML einlesen und Objekte bekommen Java Basics - Anfänger-Themen 2
M Daten aus .txt Datei einlesen und weiterverarbeiten Java Basics - Anfänger-Themen 80
julian0507 Wörter einlesen lassen und rückwärts ausgeben Java Basics - Anfänger-Themen 7
S JSON einlesen und benutzen Java Basics - Anfänger-Themen 5
A CSv.Datei einlesen und die werte in zweidemosional Int Array speichern Java Basics - Anfänger-Themen 9
I Ical4j / Kalender einlesen von URL - Fehler: "Unparseable date" Java Basics - Anfänger-Themen 16
Saiko Zeilen einer Datei einlesen Java Basics - Anfänger-Themen 3
sserio Txt Datei einlesen Java Basics - Anfänger-Themen 9
D Strings aus Excel-Datei einlesen Java Basics - Anfänger-Themen 2
julian112 Input/Output .gz bzw. .txt Datei Einlesen und Umgang mit Exceptions Java Basics - Anfänger-Themen 1
M String beim einlesen formatieren Java Basics - Anfänger-Themen 12
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
G JSP Textfeld einlesen Java Basics - Anfänger-Themen 2
M Einlesen > new Leser Java Basics - Anfänger-Themen 5
W Werte durch Konsole einlesen Java Basics - Anfänger-Themen 10
A Array einlesen und ausgeben Java Basics - Anfänger-Themen 13
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
KogoroMori21 Textdatei einlesen im Array (Selection Sort Algorithmus) Java Basics - Anfänger-Themen 3
S Wort einlesen Array ausgeben Java Basics - Anfänger-Themen 4
I Java String einlesen und auslesen Java Basics - Anfänger-Themen 11
A Input/Output Mehrere Csv-Dateien einlesen Java Basics - Anfänger-Themen 2
S CSV einlesen und mit Komma trennen Java Basics - Anfänger-Themen 12
CptK Richtigen Pfad beim einlesen von Datei finden Java Basics - Anfänger-Themen 2
I Java-Wort einlesen und ausgeben Java Basics - Anfänger-Themen 7
J Csv-Datei einlesen Java Basics - Anfänger-Themen 52
JD_1998 Arrays einlesen, zwischenspeichern und wieder ausgeben Java Basics - Anfänger-Themen 8
L Konstruktor für eine Map-Datei/Map-Datei einlesen Java Basics - Anfänger-Themen 5
L Datein einlesen Java Basics - Anfänger-Themen 1
O zufälliges Wort aus einer Datei einlesen Java Basics - Anfänger-Themen 32
E Input/Output Datei anhand von Dateinamen einlesen Java Basics - Anfänger-Themen 5
C Datei über relative Pfade einlesen Java Basics - Anfänger-Themen 6
A Input/Output Dateien einlesen und ausgeben Java Basics - Anfänger-Themen 7
A Klasse um daten zu einlesen Java Basics - Anfänger-Themen 26
A 2d Arrays aus txt.file einlesen Java Basics - Anfänger-Themen 16
A Textdatei mit stream einlesen Java Basics - Anfänger-Themen 2
P Datei einlesen und zurückgeben Java Basics - Anfänger-Themen 5
G String wird nach Einlesen aus Datei nicht erkannt Java Basics - Anfänger-Themen 3
M String in Scanner einlesen Java Basics - Anfänger-Themen 6
E TXT FILE EINLESEN Java Basics - Anfänger-Themen 4
M Einzelzeichen einlesen Java Basics - Anfänger-Themen 2
C (char) Array einlesen Java Basics - Anfänger-Themen 8
B HTML File einlesen inkl. Bilder? Java Basics - Anfänger-Themen 2
E Mehrere Eingabezeilen gleichzeitig einlesen Java Basics - Anfänger-Themen 7
B HTML Datei einlesen und HTML Code in String wandeln Java Basics - Anfänger-Themen 19
V Schleife für das Einlesen von Werten für int Variablen, die Bestandteil von Arrays sein sollen Java Basics - Anfänger-Themen 16
I Nur auf Abfrage von einer Text Datei einlesen Java Basics - Anfänger-Themen 11
P Text Datei einlesen und übertragen Java Basics - Anfänger-Themen 15
E Einteilung der Räume mit einlesen einer .txt datei Java Basics - Anfänger-Themen 16
P Array einlesen von Konsole Java Basics - Anfänger-Themen 8
D Eingaben in String Array einlesen Java Basics - Anfänger-Themen 12
B CSV einlesen - Parameter a) encoding b) delimiter Java Basics - Anfänger-Themen 7
R Compiler-Fehler Einlesen von Konsolenparameter funtioniert nichtmehr Java Basics - Anfänger-Themen 4
I OOP Objektnamen über die Konsole richtig einlesen Java Basics - Anfänger-Themen 9
J Einlesen von Datei funktioniert nicht Java Basics - Anfänger-Themen 8
H Einlesen Java Basics - Anfänger-Themen 8
H Einlesen von Zahlen Java Basics - Anfänger-Themen 20
B mehrere Werte mit scanner und while schleife einlesen, max berechnen bzw addieren Java Basics - Anfänger-Themen 2
CptK Datentypen Text Dateien einlesen Java Basics - Anfänger-Themen 3
A Datentypen Unterschiedliche Datentypen in einer Eingabe einlesen Java Basics - Anfänger-Themen 2
R txt Einlesen und Verarbeiten Java Basics - Anfänger-Themen 15
M Erste Schritte CSV-File einlesen und Daten verarbeiten Java Basics - Anfänger-Themen 5
M Datei einlesen mit Scanner funktioniert nicht (FileNotFoundException) Java Basics - Anfänger-Themen 6
K Sonderzeichen einlesen Java Basics - Anfänger-Themen 3
L Input/Output XML Datei einlesen (JAXB?) Java Basics - Anfänger-Themen 10
F Zahlen aus Datei einlesen und in Array speichern Java Basics - Anfänger-Themen 2
I Datei einlesen Java Basics - Anfänger-Themen 11
J Best Practice [Code Verbesserung] TXT einlesen und in Arrayliste speichern Java Basics - Anfänger-Themen 5
A Ungeordnetes Array ordnen, Zahl einlesen und einordnen Java Basics - Anfänger-Themen 23
R Erste Schritte Sicheres einlesen eines Strings Java Basics - Anfänger-Themen 2
MaximilianTM Input/Output Einlesen und bearbeiten einer text Datei / Zeile Java Basics - Anfänger-Themen 5
C Erste Schritte Regex - Datei einlesen und splitten Java Basics - Anfänger-Themen 4
T Input/Output Einlesen eines .txt Files nur bei gesetztem Breakpoint möglich Java Basics - Anfänger-Themen 1
L RSA Public Key einlesen Java Basics - Anfänger-Themen 0
K Datei aus unbekannten Speicherorten einlesen Java Basics - Anfänger-Themen 1
T Datei in Array einlesen "null" Java Basics - Anfänger-Themen 8
U Daten aus Datei einlesen Java Basics - Anfänger-Themen 4
J Auslesen/speichern und wieder einlesen Java Basics - Anfänger-Themen 7
N Datei Zeilenweise einlesen, Ausgabe mehrere Arrays Java Basics - Anfänger-Themen 7
B Excel File einlesen und Überschrift prüfen Java Basics - Anfänger-Themen 8
M Einlesen von Integerwertern aus einer CSV Java Basics - Anfänger-Themen 8
? Methoden Boolean Wert vergleichen und einlesen Java Basics - Anfänger-Themen 1
K String einlesen und als Variable speichern Java Basics - Anfänger-Themen 8
K .txt einlesen und in ein Array packen Java Basics - Anfänger-Themen 2
M Erste Schritte Zahlen einlesen und auswerten Java Basics - Anfänger-Themen 6
N Best Practice CSV einlesen - Variables Array?! Java Basics - Anfänger-Themen 8
O Klassen Objektnamen für Methodenaufrauf einlesen lassen Java Basics - Anfänger-Themen 2
D Array Werte einlesen und ausgeben? Java Basics - Anfänger-Themen 8
C Java Scanner einlesen von txt Dokument InputMismatch Java Basics - Anfänger-Themen 9
V Hilfe zum Thema einlesen eines Datums Java Basics - Anfänger-Themen 5
E Erste Schritte txt.Datei mit BufferedReader einlesen und in 2D-Array abspeichern Java Basics - Anfänger-Themen 15
S Werte in Array einlesen Java Basics - Anfänger-Themen 2
A Textdatei mit BufferedReader einlesen Java Basics - Anfänger-Themen 0
P Einlesen von Daten via BufferedReader Java Basics - Anfänger-Themen 4
J Zahlen aus Konsole einlesen Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben