Frage

Was ist die Syntax für in SSIS VBScript bis zum Ende der Datei zu lesen?

Dim readFile As FileInfo = New FileInfo(logHourlyName)
If readFile.Exists() Then
   Dim textStream As StreamReader = readFile.OpenText()
   Dim strLine As String
   Do While Not EOF    <--- what goes here?
       curLine = textStream.ReadLine()
   Loop
   textStream.Close()
End If

Edit: Ich bin tatsächlich versucht, den Wert der letzten Zeile in der Datei zu erhalten. So lesen, bis nicht EOF ist nicht ganz die gleichen wie bis zum Ende der Datei zu lesen. Aber ich schneide so sehr, dass ich eine schlechten Beispiel-Code hatte.

War es hilfreich?

Lösung

http://msdn.microsoft.com/ en-us / library / system.io.streamreader.aspx :

Dim readFile As FileInfo = New FileInfo(logHourlyName)
If readFile.Exists() Then
   Dim textStream As StreamReader = readFile.OpenText()
   Dim strLine As String
   Do
       curLine = textStream.ReadLine()
   Loop Until curLine Is Nothing
   textStream.Close()
End If

Wenn Sie wollen einfach nur die letzte Zeile:

Dim readFile As FileInfo = New FileInfo(logHourlyName)
Dim lastLine As String
If readFile.Exists() Then
   Dim textStream As StreamReader = readFile.OpenText()
   Dim strLine As String
   Do
       curLine = textStream.ReadLine()
       If Not curLine Is Nothing Then lastLine = curLine
   Loop Until curLine Is Nothing
   textStream.Close()
End If

Andere Tipps

Hier ist eine Möglichkeit, nur die letzte Zeile zu lesen, ohne durch die gesamte Datei Looping. Es geht zum Ende der Datei und starten Sie das Lesen nach hinten, bis es einen anderen LF-Zeichen trifft, die das Ende der zweiten bis letzten Zeile zeigt an, und dann lesen Sie einfach diese Zeile in.

Auf einer großen Datei mit Millionen von Zeilen, verringern diese die Kosten wenigen Bytes zu lesen.

Sie können Dts.Events.FireInformation Codes Kommentar-, was in Ihrem Ausgabefenster passiert.

    Dim i As Integer
    Dim CurrentByte As Integer
    Dim Trailer As String

    i = 1

    Using reader As StreamReader = New StreamReader("c:\temp\SourceFile.txt")
        Do While CurrentByte <> 10 'while we are not finding the next LF character
           reader.BaseStream.Seek((-1 * i) - 2, SeekOrigin.End) 'seeking backwards from the last position in the file minus the last CRLF
            'Dts.Events.FireInformation(0, "Now at position", reader.BaseStream.Position().ToString, "", 0, False)
            CurrentByte = reader.BaseStream.ReadByte 'read the next byte, this will advance pointer position
            'Dts.Events.FireInformation(0, "Current ASCII Code", CurrentByte & " Character:" & Chr(CurrentByte), "", 0, False)
            i = i + 1 'go to the next character                 
        Loop
        Trailer = reader.ReadLine 'we exited on the LF character, so we are at the beginning of trailer line
        Dts.Events.FireInformation(0, "   Trailer:", Trailer, "", 0, False)
    End Using
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top