ppongrat: Dateien rückwärts lesen

oder den aktuellen Satz oben dranschreiben
.. ich will halt das, dass letzte wo reingeschrieben
wurde ganz oben steht ... wie ?

danke

  1. oder den aktuellen Satz oben dranschreiben
    .. ich will halt das, dass letzte wo reingeschrieben
    wurde ganz oben steht ... wie ?

    Wo ist das Problem?

    Datei zum Lese/Schreibzugriff öffnen,
    ggf. Datei locken,
    alte Daten lesen,
    an den Dateianfang springen,
    neue Zeilen schreiben,
    alte Daten schreiben,
    Datei schliessen.

    Peter

  2. oder den aktuellen Satz oben dranschreiben
    .. ich will halt das, dass letzte wo reingeschrieben
    wurde ganz oben steht ... wie ?

    BSP:

    .
    .
    open (datei,"daten.txt") or die "Datei nicht da!";
    @speicher = <datei>;
    close (datei);
    .
    .
    .
    open (datei,">daten.txt");
    print datei "NEUE ZEILE"; # Hier die neuen Daten in die Datei schreiben
    print datei @speicher;
    close (datei);
    .
    .

    1. open (datei,"daten.txt") or die "Datei nicht da!";
      @speicher = <datei>;
      close (datei);
      .
      .
      .
      open (datei,">daten.txt");
      print datei "NEUE ZEILE"; # Hier die neuen Daten in die Datei schreiben
      print datei @speicher;
      close (datei);

      Das ist aber ganz übler Tobak! Kein flock, keine Checks der Rückgabewerte.

      Peter

      1. open (datei,"daten.txt") or die "Datei nicht da!";
        @speicher = <datei>;
        close (datei);
        .
        .
        .
        open (datei,">daten.txt");
        print datei "NEUE ZEILE"; # Hier die neuen Daten in die Datei schreiben
        print datei @speicher;
        close (datei);

        Das ist aber ganz übler Tobak! Kein flock, keine Checks der Rückgabewerte.

        Genau!

        Und was passiert in diesem Fall mit dem Inhalt der Dateien?

        open (datei,"daten.txt") or die "Datei nicht da!";
        @speicher = <datei>;
        close (datei);
        .

        Wenn 2 Prozesse gleichzeitig auf diese Datei zugreifen, dann passiert das garantiert zu diesem Zeitpunkt! Und diesen Datenverlust würde ein flock auch nicht verhindern können.

        .
        open (datei,">daten.txt");
        print datei "NEUE ZEILE"; # Hier die neuen Daten in die Datei schreiben
        print datei @speicher;
        close (datei);

        Gruß Frank

  3. Hi,

    oder den aktuellen Satz oben dranschreiben
    .. ich will halt das, dass letzte wo reingeschrieben
    wurde ganz oben steht ... wie ?

    Wann und wo soll es oben stehen?
    Wirklich in der Datei?
    Oder vielleicht nur bei irgend einer Anzeige?

    Es ist sehr viel einfacher, eine Datei nur am Ende zu erweitert, bei
    einer eventuellen Anzeige aber den gesamten Inhalt der Datei einzulesen
    und umgekehrt sortiert anzuzeigen.

    Das funktioniert tadellos bis zu einer gewissen Größe der Datenmenge.

    Und oberhalb dieser Größe solltest Du eine intelligentere Form der
    Speicherung ins Auge fassen, beispielsweise eine Datenbank.

    Viele Grüße
          Michael