Announcement

Collapse
No announcement yet.

TextDatei bis zu einem bestimmten Zeichen auslesen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • TextDatei bis zu einem bestimmten Zeichen auslesen

    Hallo zusammen,

    benötige mal wieder eure Hilfe.

    Ich will einen größe Textdatei nicht komplett in den Speicher laden, sondern diese immer bis zu einem bestimmten Zeichen (z.B. bis zu dem Zeichen # )
    zeilenweise auslesen.

    Wie kann ich dies unter C# realisieren?

    Bespiel:

    das ist die erstezeile#und hier gehts weiter#
    und noch eine Zeile#

    Mit readLine() des Streamreader dürfte das nicht klappen, da man nicht ausschließen kann, das alles in einem String steht.
    Beispiel:
    das ist die erste Zeile#und hier gehts weiter#undnoch eine zeile#usw.

    Gibts hier evtl. eine Überladung bei der man das zu suchende Zeichen angeben könnte.

    Hab leider im Netz nichts passendes gefunden.

    Danke.

  • #2
    Hallo,
    Benutze doch direkt den Stream (bzw. FileStream).
    Gruss Simon

    Comment


    • #3
      Hallo,

      wie groß ist denn die Datei? Bis zu ein paar 100 kB würde ich mir keine Gedanken machen, wenn sie komplett eingelesen wird.

      Ansonsten kenne ich nur StreamReader.Read(): Die eine Variante liest Zeichen für Zeichen, die andere eine bestimmte Anzahl von Bytes.

      Gruß Jürgen

      Comment


      • #4
        Die Datei kann bis zu 20MB groß werden.

        hab es jetzt so realisiert:
        string inhalt = streamreader.readToEnd(PfadaufDatei) /
        Die Variable inhalt habe ich dann weiter verarbeitet und nach dem separator # aufgesplittet und dann diese Teilstrings jeweils an eine Methode zur weiteren Verarbeitung übergeben.

        Jetzt will ich aber diesen Teilstring nur jeweils aus der Datei lesen und diesen dann gleich an die Methode übergeben. Da ich nicht vorhersagen kann, wie groß die Datei wird, würde ich gerne umgehen das ganze in den Speicher zu laden und dann erst damit zu arbeiten. Kann auch nicht vorhersagen, das die Teilstrings immer in einer extra Zeile in der Datei stehen. Dann könnte ich Readline verwenden. Leider kommen die Daten halt in einem nicht definierten Stand, außer das die einzelnen Teilstrings durch # getrennt sind.

        Comment


        • #5
          Dann musst Du in der Tat unseren Vorschlägen folgen: StreamReader.Read-Methode (Char[], Int32, Int32) und dabei immer die Positionen zwischenspeichern sowie anschließend in einen String zusammensetzen.

          1. Versuch: Dazu habe ich bisher nur Encoding.GetString(Byte[]) gefunden; aber vielleicht gibt es noch etwas kürzeres zur Umwandlung zwischen Char[] / Byte[] / String.

          2. Versuch: Dazu geht z.B. StringBuilder.Append-Methode (Char[])

          Gruß Jürgen
          Zuletzt editiert von Jürgen Thomas; 22.11.2007, 15:04. Reason: Verweis auf StringBuilder nachgetragen

          Comment


          • #6
            Hallo Jürgen,

            danke für den Tip. Müßte damit funktionieren.

            Ciao
            Tom

            Comment

            Working...
            X