Datensätze aus Txt Datei auslesen - Datensätze durch stöbern

Hallo Community,

ich habe ein Programm geschrieben, welches 3 Textfelder hat und diese werden wie folgt in eine Txt-Datei gespeichert:

Inhalt1,Inhalt2,Inhalt3

Folgenden Code, habe ich hierfür verwendet:

try {
writer = new FileWriter(file ,true);
writer.write(Textfield_1.getText() + "," + Textfield_2.getText() + "," + Textfield_3.getText());

writer.write(System.getProperty("line.separator"));

writer.flush();

writer.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}```

Das klappt alles Super!
Jetzt möchte ich gerne die Txt-Datei wieder einlesen und die Daten in den 3 Textfeldern wieder anzeigen lassen.
Und ich würde gerne mit 2 weiteren Button, alle Daten anzeigen lassen. Button(vorheriger Datensatz, nächster Datensatz)

Ist das möglich? Wenn ja wie?
Könnt Ihr mir da evtl ein Code Schnipsel geben?

Vielen Dank!


Mit freundlichen Grüßen 

jFr

Hallo …

also ich hab dir mal nen kurzes Beispiel runtergeschrieben ist nicht optimal aber daraus solltest etwas für dich ableiten können:

Ich lese erst mal alle Daten des Files ein und dabei wird pro List- Eintrag jeweils ein Array mit Wert 1,2 und 3 gespeichert, welche durch das Komma getrennt waren.

Nun hast du alle Werte in deiner Liste und kannst damit machen was du willst :smiley:

Falls du JAVA 7 benutzt:
http://forum.byte-welt.net/threads/11524-Nutzt-ihr-das-try-with-resources?highlight=resource


	private static final String dataName = "datei.txt";

	public static void main(String[] args) throws IOException {
		BufferedReader reader = null;
		List<String[]> daten = new ArrayList<String[]>();
		try {
			reader = new BufferedReader(new FileReader(dataName));
			String readLine = "";
			while((readLine = reader.readLine()) != null){
				daten.add(readLine.split(","));
			}			
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (reader != null) {
				reader.close();
			}
		}
	}
}```

Was passiert wenn du ins erste Textfeld “Hallo, Welt” reinschreibst?

Wie schon gesagt, ich hab nicht gesagt, dass es perfekt ist :wink:
Sollte nur ein Anstoß sein.

Hallo,

danke erst mal für die schnelle Hilfe!
Habe den Code mal ausprobiert, leider zeigt er mir ein Fehler bei List<String[]> an.

Könnt ihr mir hier auch nochmal weiter helfen? :slight_smile: … immer diese Anfänger :smiley:

			public void actionPerformed(ActionEvent arg0) {
				BufferedReader reader = null;
		        List<String[]> daten = new ArrayList<String[]>();
		        try {
		            reader = new BufferedReader(new FileReader(dataName));
		            String readLine = "";
		            while((readLine = reader.readLine()) != null){
		                daten.add(readLine.split(","));
		            }          
		        } catch (IOException e) {
		            e.printStackTrace();
		        } finally {
		            if (reader != null) {
		                reader.close();
		            }
		        }
			}
		});
		btnDatenEinlesen.setBounds(312, 17, 128, 23);
		contentPane.add(btnDatenEinlesen);
	}```

Wie mache ich das eigentlich am Ende mit den Button vorherige Datensätze - nächster Datensatz ?
Zur Info, ja ich benutze JAVA 7.

Hallo Zusammen,

so hat es erfolgreich geklappt.

				try {
					br = new BufferedReader(new FileReader(new File("MeineDatei.txt")));
				} catch (FileNotFoundException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				char[] inhalt = new char[(int)(new File("MeineDatei.txt").length())];
				try {
					int read = br.read(inhalt);
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				String text = new String(inhalt);
				
				String text1 = new String(inhalt);
				//Trennzeichen
				String[] split = text1.split(",");
				/*(JTextField)*/ tf1.setText(split[0]);
				tf2.setText(split[1]);
				tf3.setText(split[2]);```


Habt ihr evtl. einen Lösungsansatz für die Button "vorherige Datensätze" & "nächster Datensatz" ?
Ich möchte damit zwischen den einzelnen gespeicherten Datensätze in der Txt-Datei wechseln können.

Diese sind immer mit einem "line.separator" versehen.

Inhalte der Datei sieht wie folgt aus:

Inhalt1,Inhalt2,Inhalt3
Inhalt1,Inhalt2,Inhalt3
Inhalt1,Inhalt2,Inhalt3
Inhalt1,Inhalt2,Inhalt3

Ich blick nicht so ganz durch. Du hast jetzt einen Datensatz, zB [abc] [def] [ghi] oder nicht? Dann doch einfach 2 Buttons hinzufügen. Ein JTextfield wo der aktuelle daten-
satz angezeigt wird, also setText(daten[position]). der eine button macht dann position-- der andere position++ und den text neu setzen.
Oder hab ich was falsch verstanden?

[quote=AnfJava]Ich möchte damit zwischen den einzelnen gespeicherten Datensätze in der Txt-Datei wechseln können.[/quote]Der einfachste Weg ist, nicht nur einen (den ersten) Datensatz einzulesen sondern alle. Dies behält man dann ein eienr geeigneten Datenstruktur im Speicher, dem Model. Wie meist ist Das Model auch in Deinem Fall eine Liste, deren Einträge einen Datensatz darstellen. Das kann eine Liste sein, besser ist aber, eine eigene Klasse zu erstellen, die die einzelnen Daten aufnimmt.

Was Du dann noch benötigst wirde schon gesagt: Du brauchst 2 Buttons. Einder erhöht den Zeiger auf den aktuellen Listeneintra, der ander verringert ihn. dann muss der Eintrag an dem neuen Index noch in die Anzeigefelder üvbernommen werden…

bye
TT