Entwickler-Ecke

Sonstiges (.NET) - Textfile oben beschreiben (Streamwriter)


Vegeto - Mo 15.07.13 08:45
Titel: Textfile oben beschreiben (Streamwriter)
Moin Moin

ich habe ein Text datei, die ich regelmäßig beschreibe. Die neue Zeile wird immer ans Ende der Datei gepackt, gibt es eine Möglichkeit die neuen Einträge oben reinzuschreiben?
Also das die neusten/letzten Ereignisse oben stehen?

MfG


Th69 - Mo 15.07.13 09:30

Hallo Vegeto,

nein, das unterstützt das Dateisystem nicht. Entweder immer ganze Datei schreiben oder aber Daten ans Ende einer Datei dranhängen.


Vegeto - Mo 15.07.13 09:42

Hallo Th69

Danke für deine Antwort :)
Schade das sowas nicht funktioniert :/ habe eine Methode gefunden die das an die erste stelle schreibt. Aber in der Methode komm ich nicht an alle benötigten Variablen drann :/
Ich werde wohl die Methode in ein Using-Block packen und dann benutzen.

hier die Methode:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
static void WriteABC(string filename)
{
    string tempfile = Path.GetTempFileName();
    StreamWriter writer = new StreamWriter(tempfile);
    StreamReader reader = new StreamReader(filename);
    writer.WriteLine("A,B,C");
    while (!reader.EndOfStream)
        writer.WriteLine(reader.ReadLine());
    writer.Close();
    reader.Close();
    File.Copy(tempfile, filename, true);
}


Lg

Danke trotzdem


Ralf Jansen - Mo 15.07.13 10:27

Zitat:
ich habe ein Text datei, die ich regelmäßig beschreibe. Die neue Zeile wird immer ans Ende der Datei gepackt, gibt es eine Möglichkeit die neuen Einträge oben reinzuschreiben?
Also das die neusten/letzten Ereignisse oben stehen?


Warum müssen die als erstes in der Datei stehen? Quergedacht reicht es vielleicht ja auch die immer ans Ende zu hängen und den Inhalt der Datei nur ~andersrum~ anzuzeigen.


Vegeto - Mo 15.07.13 10:54

Hallo Ralf Jansen

gibt es eine Möglichkeit die TextDatei ~andersrum~ auszulesen?
Also an die Variante habe ich nicht gedacht xD

Aber ich glaub so würde es bei mir zu Daten verlust führen...
aber ist ne überlegung wert :)

Edit: eigentlich wollte ich somit erreichen, dass wenn man die Textdatei öffnet, den neusten Eintrag ganz oben stehen hat...


Ralf Jansen - Mo 15.07.13 11:07

Wenn du das in einem beliebigen Editor in der richtigen Reihenfolge haben willst dann bleibt dir keine andere Möglichkeit als das in der entsprechenden Reihenfolge in die Datei zu schreiben.

Wenn du das aber selber irgendwo anzeigen wilst in deiner eigenen Anwendung hast du natürlich alle Möglichkeiten. Da du vorraussichtlich eh die ganze Datei anzeigst ist das rotieren im Speicher auch hier am wenigsten aufwendig.

Man könnte zum Beispiel die Datei einfach in ein Array lesen und dieses invertieren.

Zitat:
File.ReadAllLines(PfadZurDatei).Reverse();


Vegeto - Mo 15.07.13 12:03

Hi Ralf Jansen,

Danke für deinen Gedankenschub :D

Doch ich habe es jetzt so geschafft wie ich das wollte :D

Habe mit einer Variable gearbeitet, die ich zunäcgst befüllt habe (StreamReader) und danach verändert habe und dann in das Textfile beschrieben habe (Streamwriter).

Danke euch beiden :D