Text in txt-Datei in letzte Zeile schreiben?

MC_Basstard

Mitglied
Hallo Leute,

ich brauche unbedingt Hilfe und zwar will ich den Text, den ich in einem Textfeld schreibe in eine txt-Datei, in der schon etwas drinnen steht, speichern.

Mein problem ist es, dass ich nicht weiß wie, denn wenn ich den Dateinamen angebe und etwas hinein schreibe denk ich mal erstellt es die datei nur neu zumindest ist der Inhalt nicht mehr darin sondern nur noch das, was ich im Textfeld geschrieben habe.

Als Erstes würd ich gerne versuchen den Text aus dem Textfeld in die letzte Zeile zu schreiben.

Könnt ihr mir da helfen?

hier mal der wichtigste Code:

Java:
public class Datenschreiben extends JFrame implements ActionListener
{
	...

	String text = new String("");
	String dateiName = "Test.txt";	
	TextField tfSchreiben;
	
	public Datenschreiben()
	{
		...
		
		getContentPane().setLayout(new FlowLayout());
		tfSchreiben = new TextField(text,20);
		add(new JScrollPane(tfSchreiben));
		tfSchreiben.setCaretPosition(0);
		tfSchreiben.setEditable(true);
		tfSchreiben.setFont(new Font("Arial", Font.PLAIN, 14));
		
		
		...

		}
	
	
	public void schreiben() throws IOException{					
		
	    FileOutputStream schreibeStrom = new FileOutputStream(dateiName);		
	    text = tfSchreiben.getText();
	    for (int i=0; i < text.length(); i++){						
	      schreibeStrom.write((byte)text.charAt(i));	
	    }						
	    schreibeStrom.close();	
	    System.out.println("Datei ist geschrieben!");	
	}
	
	
	public void actionPerformed(ActionEvent aefiW4) {	
		
                          ...

		if (aefiW4.getSource().equals(buSpeichern)){
			try {
				schreiben();
			} catch (IOException e) {
				e.printStackTrace();
			}
			return;
			}

	}	
				
}


Schonmal großen Dank im Vorraus.
Gruß Stefan
 
Zuletzt bearbeitet:

noobadix

Bekanntes Mitglied
Hallo,

du könntest die Datei zunächst auslesen, in einen StringBuffer schreiben und dann das Neue dranhängen und die alte Datei dann überschreiben.

Gruß N.
 

noobadix

Bekanntes Mitglied
also so ungefähr:

Java:
...

public void speichern(){
   String toAppend = JTextField.getText();
   StringBuffer striBu = new StringBuffer();
   try{
      File f = new File("SpeicherDateiName");
      FileReader fr = new FileReader(f);
      BufferedReader reader = new BufferedReader(fr);
      String line = null;
      while((line = reader.readLine()) != null){
         striBu.append(line);
      }
      striBu.append(toAppend);
      reader.close();
      BufferedWriter writer = new BufferedWriter(new FileWriter("SpeicherDateiName"));
      writer.write(striBu.toString());
      writer.close()
      }
      catch(Exception e){}
}

...

Hab's nicht getestet!!!
 
Zuletzt bearbeitet:

MC_Basstard

Mitglied
Cool danke hat funktioniert! :toll:
Jetzt schau ich noch das ich den Inhalt einlese, das Neue hinzufüge, und dan alles Zeile für Zeile wieder auslese, so dass nicht alles nebeneinander steht.

Wenn ich nicht weiter komme melde ich mich wieder.

Gruß
Stefan
 

Ebenius

Top Contributor
An was kann das liegen, dass in der erstellten Datei die eigentlichen "\n" anstatt eine neue Zeile zu machen nur als Viereck angezeigt werden?
An Windows. :)

Du musst statt eines [c]\n[/c] den systemspezifischen Zeilentrenner verwenden: [c]System.getProperty("line.separator");[/c] Du kannst auch die Methode [c]newLine()[/c] des BufferedWriters benutzen; die macht's auch richtig.

Ebenius
 

MC_Basstard

Mitglied
Danke :D
hab es jetzt hinbekommen, dass es immer in ne neue Zeile schreibt, aber leider öfters als gewollt ???:L


Hab es jetzt so geschafft:

Java:
...

public class Datenschreiben extends JFrame implements ActionListener
{
             ...

	String text = new String("");
	String dateiName = "Test.txt";	
	TextField tfSchreiben;
	private static String lesen = "";
	String ls = System.getProperty("line.separator");


	
	public Datenschreiben()
	{
		...
		
		getContentPane().setLayout(new FlowLayout());
		tfSchreiben = new TextField(text,20);
		add(new JScrollPane(tfSchreiben));
		tfSchreiben.setCaretPosition(0);
		tfSchreiben.setEditable(true);
		tfSchreiben.setFont(new Font("Arial", Font.PLAIN, 14));
		
		...

		}
	
	
	public void schreiben() throws IOException{
		text = tfSchreiben.getText();
		StringBuffer sb = new StringBuffer();
		try{
			FileReader fr = new FileReader("Kopie von buch.txt");	
			BufferedReader br = new BufferedReader(fr);
			String zeile = null;
			while( (zeile = br.readLine()) != null )
	    	{
	    	sb.append(lesen += zeile + ls);
	    	}
	    sb.append(text);
	    br.close();
	    BufferedWriter writer = new BufferedWriter(new FileWriter("Kopie von buch.txt"));
	    writer.write(sb.toString());
	    writer.close();
		}
		catch(Exception e){}
		return;
		}

	    
	    
	
	public void actionPerformed(ActionEvent aefiW4) {	
		
                          ...

		if (aefiW4.getSource().equals(buSpeichern)){
			try {
				schreiben();
			} catch (IOException e) {
				e.printStackTrace();
			}
			return;
			}
	
	}															
}


In der Datei stand zuvor:

Darius Haus, TS-A;
Michael Dach, AS-E;
Michael Dach, AS-E;
Beate Mayr, BT;
Color Green, HG;
Xaver Dill, KD-2;
Gerhard Groß, Dr., AH
Gerhard Groß, Dr., AH


Nun steht drinnen:

Darius Haus, TS-A;
Darius Haus, TS-A;
Michael Dach, AS-E;
Darius Haus, TS-A;
Michael Dach, AS-E;
Michael Dach, AS-E;
Darius Haus, TS-A;
Michael Dach, AS-E;
Michael Dach, AS-E;
Beate Mayr, BT;
Darius Haus, TS-A;
Michael Dach, AS-E;
Michael Dach, AS-E;
Beate Mayr, BT;
Color Green, HG;
Darius Haus, TS-A;
Michael Dach, AS-E;
Michael Dach, AS-E;
Beate Mayr, BT;
Color Green, HG;
Xaver Dill, KD-2;
Darius Haus, TS-A;
Michael Dach, AS-E;
Michael Dach, AS-E;
Beate Mayr, BT;
Color Green, HG;
Xaver Dill, KD-2;
Gerhard Groß, Dr., AH
Darius Haus, TS-A;
Michael Dach, AS-E;
Michael Dach, AS-E;
Beate Mayr, BT;
Color Green, HG;
Xaver Dill, KD-2;
Gerhard Groß, Dr., AH
Gerhard Groß, Dr., AH
das neu geschriebene


Ich weiß grad leider nicht, an was das liegt.
Da schreibts die erste Zeile hin dann die erste und zweite dann die erste, zweite und dritte und immer so weiter.
Wie kann ich des ändern?

Gruß Stefan
 
Zuletzt bearbeitet:

Ebenius

Top Contributor
Du fügst alles schon gelesene immer wieder hinzu. So geht's:
Java:
    public void schreiben() throws IOException{
        text = tfSchreiben.getText();
        StringBuilder sb = new StringBuilder();
        try{
            FileReader fr = new FileReader("Kopie von buch.txt");   
            BufferedReader br = new BufferedReader(fr);
            String zeile = null;
            while( (zeile = br.readLine()) != null )
            {
            sb.append(zeile).append(ls);
            }
        sb.append(text);
        br.close();
        BufferedWriter writer = new BufferedWriter(new FileWriter("Kopie von buch.txt"));
        writer.write(sb.toString());
        writer.close();
        }
        catch(Exception e){}
        return;
        }
Die statische Variable [c]lesen[/c] kannst Du wieder entfernen.

BTW: Ich hab den StringBuffer durch StringBuilder ausgetauscht; weil's besser ist. :)

Ebenius
 

MC_Basstard

Mitglied
Geil danke es funktioniert :toll:

Eine Frage hätt ich aber noch ^^

Geht das, das man die txt-Datei liest, etwas dazu schreibt und wieder abspeichert (wie wir es jetzt gemacht haben) es aber den Inhalt dann auf das Alphabet überprüft und alles in der richtigen alphabetischen Reihenfolge dan ordnet?

Ich denk mal, dass das mein beschränktes Java Wissen um weites übersteigt, dennoch würd ich gerne wissen ob das eigentlich geht.

Oder ob man das beim einlesen in eine Tabelle dann irgendwie überprüfen und nach dem Alphabet ordnen?

Würd erstmal einfach gerne wissen, ob das überhaupt geht.

Gruß Stefan
 

noobadix

Bekanntes Mitglied
Dazu kannst du jede zu schreibende Zeile in eine ArrayList packen und diese dann mittels Collections.sort(ArrayList) sortieren (ABC abc 123).

Wenn jedoch jemand ne Idee hat, wie man die Groß- und Kleinschreibung ignorieren kann?
 

MC_Basstard

Mitglied
Funktioniert das mit der ArrayList beim laden, schreiben und speichern in die txt-Datei, dass es danach im Alphapet drinen steht oder erst beim einlesen in eine Tabelle?

Gruß Stefan
 

noobadix

Bekanntes Mitglied
Anscheinend ändern sich deine Daten während der Programmausführung. Es wäre also gar nicht schlecht, wenn du vielleicht diese Daten ohnehin in eine ArrayList steckst, pro Index eine Zeile vielleicht, und diese dann bei jeder Änderung neu sortierst.

Gruß N.
 

Ebenius

Top Contributor
Ich ignoriere mal die letzten beiden Beiträge. Sortieren beim Schreiben, ohne Groß-/Kleinschreibung zu beachten, geht dann also so:
Java:
    public void schreiben() throws IOException{
        text = tfSchreiben.getText();
        final List<String> lines = new ArrayList<String>();
        try{
            FileReader fr = new FileReader("Kopie von buch.txt");   
            BufferedReader br = new BufferedReader(fr);
            String zeile = null;
            while( (zeile = br.readLine()) != null )
            {
                lines.add(zeile);
            }
            lines.add(text);
            br.close();

            Collections.sort(lines, String.CASE_INSENSITIVE_ORDER);

            BufferedWriter writer = new BufferedWriter(new FileWriter("Kopie von buch.txt"));
            for (String line : lines) {
                writer.write(line);
                writer.newLine();
            }
            writer.close();
        }
        catch(Exception e){}
    }
Ebenius
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Swing jTextPane Text datei anzeigen AWT, Swing, JavaFX & SWT 7
M Text-Datei in einem JFrame öffen? AWT, Swing, JavaFX & SWT 2
M Text aus Datei in TextArea darstellen AWT, Swing, JavaFX & SWT 7
P JTextfield Text durch Keylistener verändern AWT, Swing, JavaFX & SWT 4
G Problem mit der Anzeige von jLabel. Unlesbar wenn der Text geändert wird. AWT, Swing, JavaFX & SWT 28
C JToggleButton disabled Text Color AWT, Swing, JavaFX & SWT 11
H JavaFX Label.Text mit bind an DoubleProperty binden AWT, Swing, JavaFX & SWT 3
H JList.setEnabled(false) - Text soll nicht grau sein AWT, Swing, JavaFX & SWT 2
FrittenFritze Text in Flying Saucer selectierbar machen AWT, Swing, JavaFX & SWT 0
Mojo7310 Ändern von Text in JLabel mit einem Button AWT, Swing, JavaFX & SWT 11
raeuchertofu Text von JTextfield und JLabel ändern AWT, Swing, JavaFX & SWT 2
H JavaFX Gedrehter Text auf Canvas (Positionierung) AWT, Swing, JavaFX & SWT 6
F Best-Practise: JTable Text in Zelle zu groß AWT, Swing, JavaFX & SWT 2
I Rich Text drucken AWT, Swing, JavaFX & SWT 0
B Text mit Absatz + OK-Button, der Fenster wieder schließt AWT, Swing, JavaFX & SWT 7
R Text vom Jlabel wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
N Promt Text der Combobox AWT, Swing, JavaFX & SWT 0
M JavaFX javaFX Label-Text wird nicht gesetzt AWT, Swing, JavaFX & SWT 3
sascha-sphw JavaFX ListCell höhe verändert sich beim ändern der Text-Farbe AWT, Swing, JavaFX & SWT 14
N In Textdatei Text anfügen per GUI AWT, Swing, JavaFX & SWT 3
N Textdatei GUI, Text in Textarea anzeigen mehrere Zeilen AWT, Swing, JavaFX & SWT 1
R Swing JTextField nicht-kopierbarer Text AWT, Swing, JavaFX & SWT 1
S Text-Info in der Taskbar anzeigen AWT, Swing, JavaFX & SWT 15
E Warum wird Text im JTextArea erst am Programmende angezeigt ? AWT, Swing, JavaFX & SWT 1
S Swing JLabel Text mit der Zeit ändern AWT, Swing, JavaFX & SWT 1
Hatsi09 JButton text layout AWT, Swing, JavaFX & SWT 9
B Text im Tetfeld in einer TableView darstellen AWT, Swing, JavaFX & SWT 20
C JCheckBox disabled text color AWT, Swing, JavaFX & SWT 9
ralfb1105 JavaFX Wie Text Label in neuem Window von Main Stage setzen? AWT, Swing, JavaFX & SWT 6
CptK Swing Button: ImageIcon unter den Text AWT, Swing, JavaFX & SWT 4
K Swing Text eines Lables in einer Methode ändern AWT, Swing, JavaFX & SWT 13
L JavaFX TableView kein content text ändern AWT, Swing, JavaFX & SWT 2
L JavaFX Anderer Text, wenn kein Platz ist. AWT, Swing, JavaFX & SWT 1
K JavaFX TextInputDialog Button Text ändern AWT, Swing, JavaFX & SWT 1
S 2D-Grafik affine Transformation für Text-Shape AWT, Swing, JavaFX & SWT 0
B JavaFX Text wird nicht angezeigt, kein Fehler AWT, Swing, JavaFX & SWT 2
J Text in ein Textfeld eingeben und speichern AWT, Swing, JavaFX & SWT 27
xYurisha JLabel Text einer geöffneten Gui über eine andere Klasse ändern! AWT, Swing, JavaFX & SWT 3
C Swing Spinner als TableCellEditor - Text zu klein AWT, Swing, JavaFX & SWT 2
H JavaFX - Button und Text - Falsche Darstellung AWT, Swing, JavaFX & SWT 3
DaCrazyJavaExpert Swing Extern den Text eines nicht fetsgelegten Buttons bekommen. AWT, Swing, JavaFX & SWT 12
zhermann FX Label text wird nicht richtig angezeigt AWT, Swing, JavaFX & SWT 12
I JavaFX formatierter Text in PDF speichern AWT, Swing, JavaFX & SWT 4
T JavaFX Text des ProgressIndicators ändern AWT, Swing, JavaFX & SWT 2
E Swing Text verschwindet AWT, Swing, JavaFX & SWT 1
G JavaFX - Während AudioRecording keine Text eingabe TextField möglich AWT, Swing, JavaFX & SWT 6
G Rectangle Breite richtet such an die Breite vom Text AWT, Swing, JavaFX & SWT 1
Sanni94 JavaFX Kann man eine Grafik in einen Text einbinden? AWT, Swing, JavaFX & SWT 2
S JTextArea Text nach oben wandern lassen AWT, Swing, JavaFX & SWT 7
F Icons neben Text in Listview setzen AWT, Swing, JavaFX & SWT 2
K Rich Text FX von TomasMikula AWT, Swing, JavaFX & SWT 0
M Text in einem Label fett setzen AWT, Swing, JavaFX & SWT 4
S JAVAFX HTMLEditor wrap text AWT, Swing, JavaFX & SWT 1
J JavaFX Translation Text/Label AWT, Swing, JavaFX & SWT 2
K Swing JTable mit ImageIcon und Text in einer Zelle AWT, Swing, JavaFX & SWT 1
A JavaFX HTMLEditor in Text umwandeln AWT, Swing, JavaFX & SWT 2
M Swing jButton Text verschwindet AWT, Swing, JavaFX & SWT 2
J JavaFX Bestimmte Zellen im TableView ändern (Farbe und Text) AWT, Swing, JavaFX & SWT 1
2 JLabel - setText ändert den Text nicht AWT, Swing, JavaFX & SWT 4
B Jlabel Text von anderen Klasse aus ändern AWT, Swing, JavaFX & SWT 9
stylegangsta JLabel anzuzeigenden Text zentrieren AWT, Swing, JavaFX & SWT 9
javampir Java FX Text verschwindet nicht AWT, Swing, JavaFX & SWT 9
Tausendsassa Text changed event handler jTextField AWT, Swing, JavaFX & SWT 3
Tom299 JavaFX Text oder Label benutzen AWT, Swing, JavaFX & SWT 4
E To get a color text on the TextArea AWT, Swing, JavaFX & SWT 4
E To get color text on the TextArea AWT, Swing, JavaFX & SWT 5
M Swing JTextPane, Bilder und Text-flow AWT, Swing, JavaFX & SWT 2
Z AWT JLabel setzt kein neuen Text AWT, Swing, JavaFX & SWT 6
D Event Handling Aus einer anderen Klasse heraus einen Text des JLabels ändern. AWT, Swing, JavaFX & SWT 12
T JavaFX Editable Combobox Text-Selektierung nach Trigger AWT, Swing, JavaFX & SWT 4
S JLabel-Text in Methode setzen? AWT, Swing, JavaFX & SWT 2
F JPanel "zeichnet" keinen Text AWT, Swing, JavaFX & SWT 14
U WYSIWYG Text-Editor für JFrames AWT, Swing, JavaFX & SWT 8
C Button Text in JList neue Zeile AWT, Swing, JavaFX & SWT 6
T MausClick soll TExt ändern AWT, Swing, JavaFX & SWT 6
J Text bei Eingabe löschen AWT, Swing, JavaFX & SWT 5
A SWT Auto completion in text box AWT, Swing, JavaFX & SWT 5
C Geloest: JTextfield: Titel automatisch entfernen, sobald Text eingegeben wird AWT, Swing, JavaFX & SWT 1
I Text zur Linie zeichnen AWT, Swing, JavaFX & SWT 1
J JavaFX JavaFX Probleme bei der Anzeige von Text AWT, Swing, JavaFX & SWT 18
X AWT Text der mit Graphics "drawString(...)" geschreiben wurde wieder löschen. AWT, Swing, JavaFX & SWT 6
O Swing Text aus Textfield auslesen AWT, Swing, JavaFX & SWT 8
B Text auf Display ausgeben [LWJGL] AWT, Swing, JavaFX & SWT 2
G Text im textfeld in einem Editor anzeigen AWT, Swing, JavaFX & SWT 18
S TextArea get Selected row(Text) AWT, Swing, JavaFX & SWT 6
A Radio Buttons sollen den Text der text Area bestimmen AWT, Swing, JavaFX & SWT 9
BRoll JButton Text nicht ausblenden ("...") AWT, Swing, JavaFX & SWT 2
J LayoutManager Text Spielerein GUI AWT, Swing, JavaFX & SWT 2
H Javafx - Styled Text AWT, Swing, JavaFX & SWT 5
M Text Area 1. Zeile oben AWT, Swing, JavaFX & SWT 4
A Swing Focus der Radio Buttons + text bleibt gleich und gleichzeitige ausgabe zweier Objekte in 1. Fenster AWT, Swing, JavaFX & SWT 3
R JavaFX Automatischer Zeilenumbruch in Text AWT, Swing, JavaFX & SWT 13
P JList/JScroolPane Text verschieben und text wrappen AWT, Swing, JavaFX & SWT 3
F Dialog mit Titel, Text und Ok Button AWT, Swing, JavaFX & SWT 2
T Swing HTML Text aus JLabel ohne "HTML-Tags" in String einlesen AWT, Swing, JavaFX & SWT 5
TheJavaKid DocumentListener soll Text in JTextField ändern AWT, Swing, JavaFX & SWT 4
K JEditorPane Text einfügen AWT, Swing, JavaFX & SWT 4
A Text (String) zu einer Box hinzufügen AWT, Swing, JavaFX & SWT 16
B SWT Text - zeilenumbruch AWT, Swing, JavaFX & SWT 2
TheWhiteShadow Swing Document Text Position in Pixel AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben