(Text)Datei verändern

Hallo ihr da draussen,

ich habe ein kleines Problem bei dem ich irgendwie keine lösung finde. Und zwar will ich eine Text-Datei verändern, also ich will eine neue Zeile mit Daten hinzufügen.
Dazu muss ich ja das Textdokument laden, bis zur ersten leeren Zeile gehen und dann an der stelle den Text einfügen.

aber irgendwie weiß ich nicht wie…

kann mir wer helfen?

Ich denke, dass das eigentlich eine recht triviale Aufgabe ist, aber manchmal hat man ja Tomaten auf den Augen :frowning:

Wär euch sehr Dankbar.

Hallo,

es gibt mehrere Möglichkeiten in eine Datei zu schreiben.
Hier eine von vielen:

 BufferedWriter out = null;
 try {
 String s = "the string to write in the file...";
 out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(
 "demo.txt")));
 System.out.println(s);
 out.write(s, 0, s.length());
 } catch (IOException e) {
 e.printStackTrace();
 } finally {
 if (null != out) {
 try {
 out.close();
 } catch (IOException e) {
 e.printStackTrace();
 }
 }
 }

Gruß, Stephan

Hi,

das funktioniert zwar, aber mein Problem ist immer, dass er nicht eine neue Zeile hinzufügt, sondern er fügt einfach eine Zeile ein und löscht den Rest. Also überschreibt einfach die Datei ohne die Sachen vorher mit einzubeziehen…

Kann mir noch jemand helfen, wie ich wirklich bis zur letzten Zeile einer Datei komme? Also ne While-Schleife is eigentlich klar aber was kommt da rein?

while (zeile != null)

aber dann?

Ich bin bei Deinem Posting von einer anderen Aufgabenstellung ausgegangen.
Du könntest meinen Code einfach erweitern, indem Du einen InputStreamReader benutzt, um die den Inhalt einzulesen und fügst dann Deinen String hinzu.
Eine andere Möglichkeit zeige ich Dir hier:

public class Demo{

 public static void main(String[] args){
 RandomAccessFile raf = null;

 try {
 raf = new RandomAccessFile( "E:/tmp/rand.data", "rw" );/\* open file with read/write mode \*/
 raf.seek(raf.length());/\* seek end of file\*/
 raf.writeBytes("demo string " /\* string -\> LSB 8-bit \*/ );
 raf.writeBytes(System.getProperty("line.separator"));/\*new line\*/
 } catch (IOException e) {
 //handle error instead of print stacktrace
 e.printStackTrace();
 }finally{
 try {
 // C L O S E
 if(null != raf)raf.close();
 } catch (IOException e) {
 e.printStackTrace();
 }
 }

 }
}

Nur als Hinweis:
Auch hierfür gibt es mehrere Möglichkeiten zu einer Lösung zu kommen.

Gruß, Stephan