kostenloser Webspace werbefrei: lima-city


c# - Datei mit StreamReader mehrmals lesen?

lima-cityForumProgrammiersprachenProgrammieren mit .NET & Mono

  1. Autor dieses Themas

    pandaro

    Kostenloser Webspace von pandaro

    pandaro hat kostenlosen Webspace.

    Hallo Leute,

    heute wollte ich das erste Mal ausprobieren wie man mit C# Dateien erstellt, ausliest und ändert.
    Dabei ist mir folgendes aufgefallen und würde gerne wissen ob es alternative, weniger umständliche Möglichkeiten gibt das folgende Problem zu lösen:

    Ich habe mittels StreamReader eine Datei Zeile für Zeile bis zum Ende gelesen. Als ich dann mit dem selben StreamReader die Datei nochmal lesen will stellte sich mir das Problem, dass ich mich am Ende der Datei befand und es nichts mehr zu lesen gab, ich allerdings ich (auch nach langem Googlen) keine Möglichkeit fand zum Anfang der Datei zu springen um sie nocheinmal mit dem selben StreamReader zu lesen. In C gibt es dafür die Funktion fseek, gibt es etwas ähnliches auch in C# ?

    Mir ist klar, dass man auch einfach einen neuen StreamReader für die Datei öffnen kann oder den Inhalt beim ersten Lesen in Variablen Speichern kann, doch mich interessiert es trotzdem.

    Danke im Voraus

    Pandaro


    Edit: Ich glaub ich hab im Thema das "Visual" vor dem c# vergessen. ^^

    Beitrag zuletzt geändert: 5.12.2010 0:00:38 von pandaro
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Es gibt nur ein C#, deshalb kann man das "Visual" auch weglassen. ;)

    Du kannst die Eigenschaft `Position` vom Stream auf `0` setzen, so etwa:
    StreamReader reader = new StreamReader(path);
    // [...] Alles auslesen
    
    // Zurück an den Anfang:
    reader.BaseStream.Position = 0;
    reader.DiscardBufferedData;
    Das funktioniert aber nur, wenn die Eigenschaft `CanSeek` von `StreamReader.BaseStream` `true` ist.
  4. Autor dieses Themas

    pandaro

    Kostenloser Webspace von pandaro

    pandaro hat kostenlosen Webspace.

    Danke für die schnelle und gute Antwort!
  5. Hallo,

    du kannst aber auch einfach die Methode File.ReadAllLines benutzen. Diese gibt dir ein string[] zurück. In diesem Array kannst dich dann austoben und brauchst dich nicht mehr um die Datei selber kümmer :)

    string[] lines = File.ReadAllLines("readme.txt");
    
    foreach (string line in lines)
    {
            Console.WriteLine(line);
    }


  6. windows-phone

    windows-phone hat kostenlosen Webspace.

    Du kannst es doch auch einfach in einer Schleife wiederholen lassen.
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!