VisualBasic .Net Datei Zeichenweise auslesen und weiterverarbeiten

DerZock

Lieutenant
Registriert
Mai 2009
Beiträge
908
Bräuchte mal bisschen Hilfe in .Net.

Ich möchte eine Datei Zeichenweise (nicht Zeilenweise!!) auslesen und die ausgelesenen Werte weiter verarbeiten.

So lese ich die Datei z.Z. ein:
Code:
Public Function WerteAusFile(ByVal _path As String) As Char()
        Try
            Dim fileStream As FileStream
            fileStream = New FileStream(_path, FileMode.Open, FileAccess.Read)
            Dim streamReader As StreamReader
            streamReader = New StreamReader(fileStream)

            Dim mybuffer() As Char = New Char(CInt(fileStream.Length())) {}
            streamReader.Read(mybuffer, 0, CInt(fileStream.Length))
            Console.WriteLine(mybuffer)
            fileStream.Close()
            streamReader.Close()
            Return mybuffer
        Catch ioEx As FileNotFoundException
            Console.WriteLine(ioEx.Message)
        End Try
    End Function

Wie bekomme ich jedoch jetzt an die einzelnen Werte wenn ich weiß, dass z.B. ab dem 5. Zeichen eine 3-stellige Zahl steht? Ich brauche also die Zeichen von 5-8.
 
Lies das einfach ganz ein (vorausgesetzt die Datei ist nicht all zu groß) und mach dann
Code:
newString = oldString.Substring(4, 3)
 
@DerZock
Was hast du denn genau vor?
Es kommt eigentlich eher selten vor, dass bestimmte Werte in einer Datei immer an der gleichen Stelle stehen und immer die gleiche Länge haben.
Sieht ein bisschen danach aus, als ob du auf dem Holzweg wärst.

Nichts desto trotz, so sollte es klappen:
Code:
streamReader.BaseStream.Position = 4;
streamReader.Read(buffer, 0, 3);
 
@locomarco:
genau so etwas habe ich gesucht, jetzt klappts ;)

@Grantig:
Das habe ich bis heute auch gedacht^^
Allerdings wird die Datei von einem Grossrechner zur Verfügung gestellt. Deshalb stehen die Werte immer an der gleichen Stelle. Eine Satzbeschreibung liegt auch dafür vor.
 
Deine Funktion würde ich nochmal überarbeiten, denn jetzt ist sie so, dass bei einem Fehler/Exception die Dateien nicht unmittelbar geschlossen werden. Insgesamt würde ich wahrscheinlich eher folgendes machen:

Code:
Public Function WerteAusFile(ByVal _path As String) As Char()
  Return System.IO.File.ReadAllText(_path).ToCharArray()
End Function

Das hat jedoch das Limit, dass die Datei ca. <2GB sein muss. Bei größeren Dateien würde ich dann Grantigs Variante verwenden. Wenn dir wichtig ist Ressourcen zu schonen, dann wirst du Grantigs Methode anwenden müssen.
 
Zuletzt bearbeitet:
DerZock schrieb:
Das habe ich bis heute auch gedacht^^
Allerdings wird die Datei von einem Grossrechner zur Verfügung gestellt. Deshalb stehen die Werte immer an der gleichen Stelle. Eine Satzbeschreibung liegt auch dafür vor.
Tja, man lernt nie aus^^

Wegen dem fehlenden Exception Handling:
Schau dir doch mal das Using Statement an, das dürfte in deinem Fall ganz nützlich sein ;)
 
Zurück
Oben