Schreiben am Anfang einer Textdatei Java

8

Ich muss etwas in den Anfang einer Textdatei schreiben. Ich habe eine Textdatei mit Inhalt und möchte etwas vor diesen Inhalt schreiben. Sag ich habe;

  

Guten Tag Herr, wie geht es Ihnen heute?
  Mir geht es gut, wie geht es dir?
  Danke für die Nachfrage, ich bin großartig

Nach dem Ändern möchte ich, dass es so aussieht:

  

Page 1-Szene 59
  25.05.2011

     

Guten Tag Herr, wie geht es Ihnen heute?
  Mir geht es gut, wie geht es dir?
  Danke für die Nachfrage, ich bin großartig

Habe einfach den Inhalt erfunden :) Wie kann ich eine Textdatei auf diese Weise verändern?

    
toruko 25.05.2011, 16:21
quelle

5 Antworten

20

Sie können es nicht wirklich modifizieren so - Dateisysteme lassen Sie normalerweise nicht an beliebigen Orten einfügen - aber Sie können:

  • Erstellen Sie eine neue Datei
  • Schreibe das Präfix dazu
  • Kopieren Sie die Daten aus der alten Datei in die neue Datei
  • Verschieben Sie die alte Datei an einen Sicherungsspeicherort
  • Verschieben Sie die neue Datei an den Speicherort der alten Datei
  • Löschen Sie optional die alte Sicherungsdatei
Jon Skeet 25.05.2011, 16:26
quelle
3

Nur für den Fall, dass es für jemanden von Nutzen ist, ist hier der vollständige Quellcode der Methode, Zeilen mit Apache voranzustellen Commons IO Bibliothek. Der Code liest nicht ganze Dateien in den Speicher, so dass Dateien jeder Größe bearbeitet werden können.

%Vor%     
hgrey 27.04.2017 09:43
quelle
2

Ich denke, was Sie wollen, ist der Direktzugriff. Sehen Sie sich das ähnliche Java-Tutorial an. Ich glaube jedoch nicht, dass Sie Daten einfach an einem beliebigen Punkt in die Datei einfügen können. Wenn ich mich richtig erinnere, würden Sie nur die Daten überschreiben. Wenn Sie einfügen möchten, müssen Sie Ihren Code

haben
  1. kopiere einen Block,
  2. überschreiben Sie Ihre neuen Sachen,
  3. kopiere den nächsten Block,
  4. überschreibt den zuvor kopierten Block
  5. kehre zu 3 zurück, bis keine weiteren Blöcke mehr vorhanden sind
atk 25.05.2011 16:42
quelle
2

Wie von @atk vorgeschlagen, ist java.nio.channels.SeekableByteChannel eine gute Schnittstelle. Aber es ist nur ab 1.7 verfügbar.

Update: Wenn Sie kein Problem mit FileUtils haben, verwenden Sie

%Vor%     
Sumit Purohit 09.07.2012 18:50
quelle
0

Dies ist keine direkte Antwort auf die Frage, aber oft wird auf Dateien über InputStreams zugegriffen. Wenn dies Ihr Anwendungsfall ist, können Sie Eingabeströme über SequenceInputStream um das gleiche Ergebnis zu erzielen. ZB

%Vor%     
Max 12.12.2014 20:56
quelle

Tags und Links