Results 1 to 5 of 5

Thread: How do I get StreamReader.ReadBlock to start at a specific line

Threaded View

  1. #5
    Lively Member
    Join Date
    Jan 2007
    Posts
    96

    Re: How do I get StreamReader.ReadBlock to start at a specific line

    Heres a function that I wrote a while back that will allow you to read text from a file with parameters for maxLines / startLine. Hope this helps.

    Code:
        Public Function ReadFile(ByVal Path As String, _
                                 Optional ByVal MaxLines As Integer = 0, _
                                 Optional ByVal StartLine As Integer = 0) As String
            Try
                If Not System.IO.File.Exists(Path) Then Return String.Empty ' Make sure the file exists
                ' Create our counter (how many lines have been read) and currentline (self explanitory) variables
                Dim Count As Integer = 0 : Dim CurrentLine As Integer = 0
                Dim sb As New System.Text.StringBuilder ' Create a new stringbuilder
                Dim sr As New System.IO.StreamReader(New System.IO.FileStream(Path, System.IO.FileMode.Open, System.IO.FileAccess.Read)) ' Read file into stream
                While Not sr.EndOfStream ' Loop while we aren't at the end of the stream
                    ' If maxlines is not unlimited (0) and number of lines exceeds the maxlines exit the loop
                    If Not MaxLines = 0 AndAlso Count >= MaxLines Then Exit While
                    Dim Line As String = sr.ReadLine ' Read current line of stream
                    If Not String.IsNullOrEmpty(Line) Then ' Make sure that the line is not an empty string
                        If Not StartLine = 0 Then ' Check if we need to monitor for the line to start reading at
                            If CurrentLine >= StartLine Then ' The current line is equal to or greater than the startline
                                sb.AppendLine(Line) ' Add line to string builder
                                Count += 1 ' Update added lines counter
                            End If
                        Else
                            sb.AppendLine(Line) ' Add line to string builder
                            Count += 1 ' Update added lines counter
                        End If
                    End If
                    CurrentLine += 1 ' Update current line counter
                End While
                sr.Close() ' Close stream reader
                ' Trim the contents of the string builder (so there is no blank trailing line) and return
                Return sb.ToString.Trim
            Catch ex As Exception
                Debug.Print(ex.ToString) ' Debug the exception so we can see what went wrong
                Return String.Empty ' Return empty string due to exception
            End Try
        End Function
    Last edited by youthbytes; Jan 4th, 2010 at 03:10 PM.

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width