MikeX Geschrieben 7. Mai 2009 Geschrieben 7. Mai 2009 Hallo, wieso überschreibt er meine Daten in der txt wenn ich den 2. Ds eingebe =? dürfte er doch eigentlich nicht oder=? und wie kann ich die Ausgabe in der txt formatieren, sodass für vorname->13Zeichen, nachname-->13Zeichen, Tel-->15Zeichen vorh. sind =? import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; public class txtdsin { public static void main(String[] args) { final String path = "test.txt"; Display display = new Display(); Shell shell = new Shell(display); shell.setToolTipText("made by M. W."); shell.setText("Datenbankeingabe"); Button hinzbut = new Button(shell, SWT.PUSH); hinzbut.setText("Hinzufügen"); hinzbut.setBounds(60, 200, 80, 30); Button ende = new Button(shell, SWT.PUSH); ende.setText("Ende"); ende.setBounds(140, 200, 80, 30); Label lfirstname = new Label(shell, SWT.NONE); lfirstname.setText("Vornamen:"); lfirstname.setBounds(50, 30, 70, 15); final Text t1 = new Text(shell, SWT.BORDER); t1.setBounds(140, 25, 90, 20); Label lsirname = new Label(shell, SWT.NONE); lsirname.setText("Nachnamen:"); lsirname.setBounds(50, 80, 70, 15); final Text t2 = new Text(shell, SWT.BORDER); t2.setBounds(140, 75, 90, 20); Label ltel = new Label(shell, SWT.NONE); ltel.setText("Telefonnummer:"); ltel.setBounds(50, 130, 80, 15); final Text t3 = new Text(shell, SWT.BORDER); t3.setBounds(140, 125, 90, 20); ende.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { System.exit(0); } }); hinzbut.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { String vn = null; String n = null; String tel = null; vn = t1.getText(); n = t2.getText(); tel = t3.getText(); try { BufferedWriter out = new BufferedWriter(new FileWriter(path)); out.write(vn + n + tel); out.newLine(); out.close(); } catch (IOException e1) { } } }); shell.setSize(300, 300); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); } }[/PHP] Zitieren
kingofbrain Geschrieben 7. Mai 2009 Geschrieben 7. Mai 2009 Die Datei wird immer wieder neu angelegt, weil Du dem FileWriter nicht sagst, dass Du an die Datei anhängen willst. Die API Doc zu FileWriter gibt Dir die entsprechende Info (-> Konstruktor). Beim zweiten Problem musst Du das selbst machen. Es gibt seit Java 5 (oder 6?) die Möglichkeit, formatierte Strings zu verwenden, allerdings habe ich das noch nicht gemacht. Ansonsten schau einfach nach, wie viele Zeichen Dein String hat und füll in einer Schleife bis zur gewünschten Anzahl mit Leerzeichen auf. [EDIT] noch kurz gegoogelt: http://java.sun.com/j2se/1.5.0/docs/api/java/util/Formatter.html[/EDIT] Peter Zitieren
MikeX Geschrieben 7. Mai 2009 Autor Geschrieben 7. Mai 2009 ja ok aber irgendwie geht das ja auch nicht, wenn ich den Filwriter außerhalb der Schleife schreibe... ???:L Zitieren
kingofbrain Geschrieben 7. Mai 2009 Geschrieben 7. Mai 2009 Häh? Was für eine Schleife? BufferedWriter out = new BufferedWriter(new FileWriter(path)); Du willst aus o.g. Zeile folgendes machen: BufferedWriter out = new BufferedWriter(new FileWriter(path, true)); Mit dem boolean Parameter sagst Du dem FileWriter, er soll die Datei nicht überschreiben, sondern Daten anhängen. Exakt so, wie es in der Doku steht. Peter Zitieren
MikeX Geschrieben 7. Mai 2009 Autor Geschrieben 7. Mai 2009 oh ja genau das hatte gefehlt.. :bimei na gut thx. . . :upps Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.