Announcement

Collapse
No announcement yet.

Lesen eines Strings aus einer Datei mit angegebener Position und Länge

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

  • Lesen eines Strings aus einer Datei mit angegebener Position und Länge

    Hallo zusammen,

    ich habe zur Zeit folgendes Problem. Ich möchte aus einer Datei einen String lesen, ab einer festgelegten Position in der Datei und einer festgelegten Länge.

    Ich Augenblick arbeite ich mit folgendem Code:

    'Datei in Binär Modus öffnen
    Dim fs As FileStream = New FileStream(FilePath, FileMode.Open)

    'Datenzeiger auf die Leseposition setzen
    fs.Seek(posToRead, SeekOrigin.Begin)

    'Bytes in Buffer lesen und zu einem String umformen
    Dim br As BinaryReader = New BinaryReader(fs)

    br.Read(charInput, 0, charInput.Length)
    stringInput = New String(charInput)

    bzw.

    bytInput = br.ReadBytes(bytInput.Length)
    stringInput = System.Text.Encoding.ASCII.GetString(bytInput)

    Gelesen werden zB. 128 Bytes.

    Beide Stringwandlungsmethoden ergeben aber nur einen Teilstring des Leseergebnisses zurück. Sobald ein 0-Byte oder Nothing-Char im InputBuffer auftritt, wird die Umwandlung abgebrochen.

    Die System.Text.Encoding Methode habe ich bereits mit allen Varianten getestet.

    Gibt es eine bessere Möglichkeit einen String ab einer bestimmten Position und Länge aus einer Datei zu lesen.

    Vorab vielen Dank für die Hilfe

  • #2
    Hallo,

    das folgende Verfahren ist für "kleinere" Dateien geeignet, weil zuerst die gesamte Datei eingelesen wird: File.ReadAllText() und auf das Ergebnis Substring(index, length) anwenden.

    Du könntest charInput auf 0 u.ä. prüfen und ggf. durch ein Leerzeichen ersetzen und erst danach stringInput zuweisen.

    Wenn Du sicher bist, dass es sich auf jeden Fall um Texte handelt: warum willst Du die Datei binär einlesen (FileStream) statt als Text? Bei StringReader.Read kannst Du passende Parameter angeben (ähnlich wie bei Seek + Read).

    Übrigens ist Encoding.ASCII (fast) immer Quatsch, weil das nur 7-bit-ASCII verarbeitet. Meistens passt Encoding.Default.

    Gruß Jürgen

    Comment

    Working...
    X