Zeilen aus einer .txt-Datei auslesen und Variablen zuweisen

Juhini19

Mitglied
Hi,

ich möchte aus einer .txt-Datei Zeilen auslesen und den Inhalt verschiedenen Variablen zuweisen. Eine .txt-Datei sieht so aus:

OrderNr 541234
NachfolgendeNr 785136
X 4,774277136
Y 2,741269844
Z 1,447853664

Dabei sollen die Wörter OrderNr, NachfolgendeNr, X, Y und Z übersprungen werden und nur das was dahinter steht, der entsprechenden Variablen zugewiesen werden.

Die Variablen in Java sind aber die gleichen:
OrderNr (int), NachfolgendeNr (int), X (double), Y (double) und Z (double).
Also soll z. B. 541234 der Variablen OrderNr zugewiesen werden.

Ich bin noch Anfänger und weiß gerade nicht, wie ich das mit dem Überspringen von Strings und dem Zuweisen der Werte machen kann.
Ich habe hier schon im Forum gesucht, aber noch nichts passendes gefunden. Oder kann man es mit startsWith() oder contains() machen?
Habt ihr eine Idee oder könnt ihr mir bitte einen Ansatz geben, wie ich das machen kann?

Ich bin bis jetzt nur so weit, dass der Inhalt der .txt-Datei ausgegeben wird.
Die ausgelesenen Werte sollen dann später in einer Datenbank gespeichert werden. Den Code dafür habe ich schon geschrieben.

Java:
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;


public class Test {
	
	public static void main(String args[])
	{
		Reader reader = null;
		try
		{
		  reader = new FileReader(path);
		  
		  for ( int txt; ( txt = reader.read() ) != -1; )
		     System.out.print( (char) txt );
		  
		  
		}
		catch ( IOException e ) {
		  System.err.println(e);
		}
		finally {
		  try { reader.close(); } catch ( Exception e ) { }
		}
	}
}
 
Zuletzt bearbeitet:

coco07

Bekanntes Mitglied
Hey Juhini19,

es gibt eine sogenannte "Dokumentation", in der Klassen mit ihrem Zuständen und Verhalten dokumentiert sind.
Unter anderem gibt es eine Methode mit dem Namen "substring", welche überladen ist. Diese Methode gibt sogar einen String zurück, welchen du dann direkt in deine Variable vom Typ String clonen kannst.
Klick mich!

PS: Wenn du nicht weißt, wo der startIndex ist, hilft dir die Methode "indexOf" sicherlich weiter ;)

grüße coco07!
 

Juhini19

Mitglied
Hi,

vielen Dank für die schnellen Antworten.
Ich habe es mit den Properties versucht und es funktioniert sehr gut. Ich habe jedoch vergessen zu erwähnen, dass die Werte X, Y und Z die Grundlage für die Berechnung von drei anderen Werten sind.
Ich habe versucht X, Y und Z in double zu konvertieren (siehe unten). Als Meldung bekomme ich dann aber java.lang.NumberFormatException: For input string: "4,774277136"

Was habe ich da falsch gemacht? Gibt es eine andere Möglichkeit um String in double zu konvertieren oder ist es bei den Properties nicht möglich?

Java:
try 
		{
			Properties properties = new Properties();
			BufferedInputStream stream = new BufferedInputStream(new FileInputStream(path));
			properties.load(stream);
			stream.close();
			String orderNr = properties.getProperty("OrderNr");
			System.out.println("OrderNr = " + orderNr);
			String nachfolgendeNr = properties.getProperty("NachfolgendeNr");
			System.out.println("NachfolgendeNr = " + nachfolgendeNr);
			double x = Double.parseDouble(properties.getProperty("X"));
			System.out.println("X = " + x);
			double y = Double.parseDouble(properties.getProperty("Y"));;
			System.out.println("Y = " + y);
			double z = Double.parseDouble(properties.getProperty("Z"));
			System.out.println("Z = " + z);
					
		}
		catch (Exception e)
		{
			System.out.println(e);
		}
 

Foxei

Bekanntes Mitglied
Doubles ins Java werden mit einem Punkt getrennt :D Also nicht "4,774277136" sondern "4.774277136"
und mein Link ist scheinbar falsch gesetzt Sorry
Wikipedia
 
Zuletzt bearbeitet:

Juhini19

Mitglied
Danke :) Ich habe es jetzt so gelöst:

Java:
 try 
		{					
			Properties properties = new Properties();
			BufferedInputStream stream = new BufferedInputStream(new FileInputStream(path));
			properties.load(stream);
			stream.close();			
			
			int orderNr = Integer.parseInt(properties.getProperty("OrderNr"));
			System.out.println("OrderNr = " + orderNr);			
			
			int nachfolgendeNr = Integer.parseInt(properties.getProperty("NachfolgendeNr"));
			System.out.println("NachfolgendeNr = " + nachfolgendeNr);
			
			String stepX = properties.getProperty("X");
			stepX = stepX.replace(",", ".");
			double x = Double.parseDouble(stepX);
			System.out.println("X = " + x);
			
			String stepY = properties.getProperty("Y");
			stepY = stepY.replace(",", ".");
			double y = Double.parseDouble(stepY);
			System.out.println("Y = " + y);
			
			String stepZ = properties.getProperty("Z");
			stepZ = stepZ.replace(",", ".");
			double z = Double.parseDouble(stepZ);
			System.out.println("Z = " + z);				
		}
		catch (Exception e)
		{
			System.out.println(e);
		}

Das replace bei "stepX = stepX.replace(",", ".");" habe ich benutzt, weil die eingelesenen Dateien bei den Zahlen (z. B. 4,774) immer ein Komma statt einem Punkt haben und doubles in Java ja immer mit einem Punkt getrennt werden.
Vielen Dank für deine Hilfe.
 
Zuletzt bearbeitet:

coco07

Bekanntes Mitglied
Hast du meinen Kommentar eigentlich gelesen vorhin?
Ich erwähnte das Wort :"Dokumentation". Wieso schaust du nicht rein?

Grüße coco07!
 

Foxei

Bekanntes Mitglied
Hi ja die Möglichkeit gibt es auch du erstellt ein File so wie bei einer Datei auch und gibst aber keine Datei sondern einen Ordner an. Die Files kannst du dann mit einer For Schleife durcharbeiten :D
Java:
File f = new File("C:/Programme");
File[] fileArray = f.listFiles();
 
Zuletzt bearbeitet:

Juhini19

Mitglied
Das habe ich jetzt auch soweit hinbekommen. Ich habe jetzt aber noch ein Problem, bei dem ich nicht weiter komme.
In meinem ersten Beitrag habe ich geschrieben, dass eine Text-Datei so aussieht:

OrderNr 541234
NachfolgendeNr 785136
X 4,774277136
Y 2,741269844
Z 1,447853664


Das hat sich jetzt jedoch hierzu geändert:

[Datensatz 1]
OrderNr 321234
NachfolgendeNr 54636
X 6,784127136
Y 2,557829844
Z 7,263441664

[Datensatz 2]
OrderNr 942334
NachfolgendeNr 785136
X 4,774277136
Y 2,741269844
Z 1,447853664

[Datensatz 3]
OrderNr 541234
NachfolgendeNr 785136
X 8,236448136
Y 9,456339844
Z 3,541036554

Die Dateien haben jetzt immer eine unterschiedliche Anzahl von Datensätzen (min. 2, max. 4). Jeder Datensatz soll ausgegeben werden.
Ich habe es jetzt so gemacht, dass ich mit den Properties nach dem letzten Datensatz in der Datei gesucht habe und die Zahl (z. B. Datensatz 3 --> 3) in einer Variablen (anzahlDatensätze) gespeichert habe.
Ich habe es anschließend mit einer for-Schleife versucht. Das funktioniert aber leider noch nicht,
es wird immer nur der Inhalt vom letzten Datensatz ausgegeben (d. h. der Inhalt der vorherigen Datensätze wird immer überschrieben). Vielleicht ist es mit der for-Schleife auch nicht möglich, weiß ich aber nicht genau.

Hier mein Code:

Java:
String anzahlDatensätzeStep = properties.getProperty("[Datensatz");
anzahlDatensätzeStep = anzahlDatensätzeStep.replace("]", "");
int anzahlDatensätze = Integer.parseInt(anzahlDatensätzeStep);
System.out.println("Insgesamt hat die Datei " + anzahlDatensätze + " Datensätze");         	 
           	
            	for (int i = 1; i <= anzahlDatensätze; i++)
            	{
                
            	System.out.println("Datensatz: " + i);	
            	System.out.println();	
            	            	
            	int orderNr = properties.getProperty("OrderNr");
            	System.out.println("OrderNr = " + orderNr);     

                int nachfolgendeNr = properties.getProperty("NachfolgendeNr");
            	System.out.println("NachfolgendeNr = " + nachfolgendeNr);         	 
            	
                String stepX = properties.getProperty("X");
                stepX = stepX.replace(",", ".");
                double x = Double.parseDouble(stepX);
                System.out.println("X = " + x);
 
                String stepY = properties.getProperty("Y"); 
                stepY = stepY.replace(",", ".");
                double y = Double.parseDouble(stepY);
                System.out.println("Y = " + y);
 
                String stepZ = properties.getProperty("Z");
                stepZ = stepZ.replace(",", ".");
                double z = Double.parseDouble(stepZ);
                System.out.println("Z = " + z);	
}

Die Datei habe ich vorher mit dem JFileChooser geöffnet. In diesem Beispiel habe ich es so gemacht, dass nur eine Datei statt mehreren Dateien aus einem Ordner eingelesen werden.
Ich dachte erst, dass ich mit System.out.append die einzelnen Datensätze an die Ausgabe anhängen könnte. Das hat aber leider nicht funktioniert.

Kann mir bitte jemand helfen?
Vielen Dank im Voraus.
 
Zuletzt bearbeitet:

Foxei

Bekanntes Mitglied
Ich glaube du hast nicht ganz verstanden was eine Properties Datei macht. Sie lässt pro Bezeichnung also bei dir OrderNr, NachfolgendeNr, X, Y, Z nur einen Wert zu. Doppelte werte werden überschrieben.
Das was du machen möchtest sieht nach eine Datenbank aus. als File gibt es das das xml File. Das kann mehrere Daten sätze.

Wenn du aber nur genau 3 Datensätze haben willst dann kannst du die namen einfach ändern.

[Datensatz 1]
OrderNrA 321234
NachfolgendeNrA 54636
XA 6,784127136
YA 2,557829844
ZA 7,263441664

[Datensatz 2]
OrderNrB 942334
NachfolgendeNrB 785136
XB 4,774277136
YB 2,741269844
ZB 1,447853664

[Datensatz 3]
OrderNrC 541234
NachfolgendeNrC 785136
XC 8,236448136
YC 9,456339844
ZC 3,541036554

Fazit wenn nur 3 Datensätze umbenenne sonst xml File.

Gruß Simon
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Saiko Zeilen einer Datei einlesen Java Basics - Anfänger-Themen 3
das_leon Alle Zeilen einer CSV-Datei auslesen Java Basics - Anfänger-Themen 1
C Zeilen aus einer Datei in Array speichern Java Basics - Anfänger-Themen 4
F Mehrere Zeilen zu einer Zeile zusammenfügen und in eine Datei schreiben Java Basics - Anfänger-Themen 1
L Split + Zeilen einer Datei mit bestimmtem Inhalt löschen Java Basics - Anfänger-Themen 23
P Bestimmte Zeilen einer Datei ermitteln ? Java Basics - Anfänger-Themen 30
Ollek Bestimmte Zeilen aus einer HTML Datei lesen Java Basics - Anfänger-Themen 8
C Zeilen aus einer Datei auslesen Java Basics - Anfänger-Themen 4
H Streams etc. erster Versuch Zeilen aus einer Datei zu lesen Java Basics - Anfänger-Themen 6
G Anzahl der Zeilen in einer Datei Java Basics - Anfänger-Themen 7
T die letzten X zeilen einer datei entfernen Java Basics - Anfänger-Themen 19
ARadauer zeilen einer text datei ermitteln Java Basics - Anfänger-Themen 6
S Anzahl von zeilen einer Datei bestimmen. Java Basics - Anfänger-Themen 4
S In einer CSV Datei leere Zeilen ignorieren Java Basics - Anfänger-Themen 6
G mit Buffered Writer innerhalb einer Datei Zeilen etc. einfüg Java Basics - Anfänger-Themen 4
crrnogorka Letzte Zeile einer Tabelle "überschreibt" alle anderen Zeilen Java Basics - Anfänger-Themen 1
F Problem mit Tabulatoren bei Zeilen zählen einer Textdatei Java Basics - Anfänger-Themen 17
B Zählen bestimmter Zeilen einer .txt Java Basics - Anfänger-Themen 7
K Wie kann ich alle Zeilen in eineR Datenbank zählen? Java Basics - Anfänger-Themen 13
L In einer Tabelle Zeilen loeschen Java Basics - Anfänger-Themen 4
W int aus Zeilen einer Textdatei Java Basics - Anfänger-Themen 3
C Zeilen einer Textdatei sortieren Java Basics - Anfänger-Themen 2
G anz. zeilen einer db-tabelle holen? ohne select * from? Java Basics - Anfänger-Themen 2
M Zeilen einer JTable Java Basics - Anfänger-Themen 3
H Leere Zeilen in Textdatei löschen lassen Java Basics - Anfänger-Themen 5
districon 2D Array - Zeilen und Spalten durchsuchen Java Basics - Anfänger-Themen 3
dieter000 Kurze Frage kann mir ejmand kurz diesen Code erklären, bzw wie man die zeilen erklärt und so Java Basics - Anfänger-Themen 1
s_1895 zu viele Zeilen in der Main Methode Java Basics - Anfänger-Themen 4
W Anzahl der Zeilen ausgeben lassen Java Basics - Anfänger-Themen 20
X Textdatei: zwei-zeilenweise gleiche Zeilen rausschmeißen Java Basics - Anfänger-Themen 21
A Jede x-te Zeile, lösche 10 Zeilen Java Basics - Anfänger-Themen 9
A String mit mehreren Zeilen splitten Java Basics - Anfänger-Themen 4
S Java Text splitten mit Tabs, Zeilen, Zeichen und Klammern. Java Basics - Anfänger-Themen 6
D JTable Zeilen löschen Java Basics - Anfänger-Themen 5
H Best Practice JavaFX TableView mit Zell-Rahmen anstelle von Zeilen-Balken Java Basics - Anfänger-Themen 1
V Ergebnisse in 2 Zeilen Java Basics - Anfänger-Themen 4
R Eine Datei mit mehreren Zeilen beschreiben Java Basics - Anfänger-Themen 5
C Zeilen in Array einlesen und splitten? Java Basics - Anfänger-Themen 17
T Zeilen des ListArray nach einem Wort durchsuchen und diese Zeile ausgeben Java Basics - Anfänger-Themen 4
T Exceptions - ausgeführte Zeilen Java Basics - Anfänger-Themen 4
M Input/Output Alle Zeilen auslesen und in Variable speichern Java Basics - Anfänger-Themen 5
X wie kann ich in bluej/java einene 2d array mit zahlen fuellen, so dass sich diese in der der zeilen Java Basics - Anfänger-Themen 2
F Textdatei einlesen und Zeilen zählen Java Basics - Anfänger-Themen 10
M Array: Zeilen vergleichen Java Basics - Anfänger-Themen 4
J Klassen Hilfe bei unbekannten Zeilen bzgl. Klassen / Komponenten Java Basics - Anfänger-Themen 12
T JTable einzelne Zeilen löschen Java Basics - Anfänger-Themen 3
K Input/Output 6000 Zeilen einlesen und String-Array vergleichen? Java Basics - Anfänger-Themen 1
L String extrahieren mit Regular Expression über mehrere Zeilen hinweg Java Basics - Anfänger-Themen 1
T CSV auf Inhalt und Zeilen überprüfen Java Basics - Anfänger-Themen 2
I Datei mit 2 Spalten und millionen Zeilen Java Basics - Anfänger-Themen 19
kaoZ Input/Output Einlesen von mehreren Zeilen Java Basics - Anfänger-Themen 4
J Zeilen unsichtbar Java Basics - Anfänger-Themen 11
3 JLabel - Text in mehreren Zeilen zentrieren Java Basics - Anfänger-Themen 5
V Methoden Zeilen nach bestimmtem Attribut sortieren Java Basics - Anfänger-Themen 4
M Einzelne Zeilen nach Zeichen auslesen Java Basics - Anfänger-Themen 4
T Methoden HILFE! readLine() liest nur ungerade Zeilen?? Java Basics - Anfänger-Themen 2
G JTextArea: nur bestimmte Zeilen anders formatieren Java Basics - Anfänger-Themen 7
B Input/Output bestimmte Zeilen in .txt Dateinen überschreiben Java Basics - Anfänger-Themen 20
G 3422 Zeilen in Eclipse Console Java Basics - Anfänger-Themen 5
L Zeilen und Spalten sortieren Java Basics - Anfänger-Themen 11
K Erste Schritte Eingabetext besteht aus mehreren Zeilen? Java Basics - Anfänger-Themen 3
T BufferedReader mehrere Zeilen einlesen Java Basics - Anfänger-Themen 4
N Zeilen vergleichen Java Basics - Anfänger-Themen 7
N Datei mit max 2000 Zeilen schreiben Java Basics - Anfänger-Themen 9
D Input/Output Zeilen aus txt-datei in Java-Liste einfügen Java Basics - Anfänger-Themen 9
K BufferedWriter schreibt die letzten paar Zeilen nicht Java Basics - Anfänger-Themen 5
R Erste Schritte 2D-Array: Zeilen & Spalten ohne schleife übergeben? Java Basics - Anfänger-Themen 3
C Mehrere Zeilen unter ~.showMessageDialog Java Basics - Anfänger-Themen 12
K Java Split mehrere Zeilen Java Basics - Anfänger-Themen 4
H 200000 Zeilen aus Datei einlesen Java Basics - Anfänger-Themen 13
Q LogFile.log einlesen und Werte zwischen 5 zeilen vergleichen Java Basics - Anfänger-Themen 5
B JList und JTable: leere Zeilen bei listfiles(); Java Basics - Anfänger-Themen 5
M Zeilen aus String exportieren Java Basics - Anfänger-Themen 5
P Unterschied dieser 2 code Zeilen Java Basics - Anfänger-Themen 12
A Anzahl Zeilen eines Arrays bestimmen Java Basics - Anfänger-Themen 10
J Zeilen eines Arrays vergleichen Java Basics - Anfänger-Themen 2
S .txt einlesen->Zeilen ersetzen->neu.txt speichern Java Basics - Anfänger-Themen 13
R String über mehrere Zeilen Java Basics - Anfänger-Themen 15
M Verständnis einiger Zeilen Java Basics - Anfänger-Themen 4
E Array mit Zahlen von 1-(Zeilen*Spalten) befüllen Java Basics - Anfänger-Themen 8
S Zeilen zählen Java Basics - Anfänger-Themen 7
H String/StringBuffer nach zeilen aufteilen Java Basics - Anfänger-Themen 2
JFeel-x Zeilen eines JEditorPanes Java Basics - Anfänger-Themen 2
0 CSV Import - Zeilen, Spalten Java Basics - Anfänger-Themen 15
O 2D Array - Zeilen-/Spaltenlänge ermitteln Java Basics - Anfänger-Themen 4
P String über mehrere Zeilen definieren Java Basics - Anfänger-Themen 3
G Datei zeilen anhängen Java Basics - Anfänger-Themen 3
A Scanner liest nur 999 Zeilen ein Java Basics - Anfänger-Themen 5
B Zeilen in Textdatei löschen Java Basics - Anfänger-Themen 2
D Datei einlesen, zeilen ignorieren, probleeem Java Basics - Anfänger-Themen 7
A Anzahl der Zeilen in Textdatei Java Basics - Anfänger-Themen 7
G Zeilen in Eclipse einblenden Java Basics - Anfänger-Themen 2
M Zeilen aus Textdatei in Array schreiben Java Basics - Anfänger-Themen 2
M Zeilen auslesen Java Basics - Anfänger-Themen 12
D Auf Zeilen eines zweidimensionalen Arrays zugreifen Java Basics - Anfänger-Themen 3
D txt nach Zeilen splitten. Java Basics - Anfänger-Themen 9
E was bedeuten @Zeilen Java Basics - Anfänger-Themen 4
T Einlesen von einzelnen Zeilen Java Basics - Anfänger-Themen 2
T null-Zeilen aus einem Array entfernen Java Basics - Anfänger-Themen 4
E Automatischer Zeilen-Umbruch bei JTextArea Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben