townlong
townlong

Reputation: 189

Visual Basic Read File Line by Line storing each Line in str

I am trying to loop through the contents of a text file reading the text file line by line. During the looping process there is several times I need to use the files contents.

Dim xRead As System.IO.StreamReader
xRead = File.OpenText(TextBox3.Text)

Do Until xRead.EndOfStream
  Dim linetext As String = xRead.ReadLine
  Dim aryTextFile() As String = linetext.Split("  ")

  Dim firstname As String = Val(aryTextFile(0))
  TextBox1.Text = firstname.ToString

  Dim lastname As String = Val(aryTextFile(0))
  TextBox2.Text = lastname.ToString
Loop

Edit: What I am trying to do is read say the first five items in a text file perform some random processing then read the next 5 lines of the text file.

I would like to be able to use the lines pulled from the text file as separated string variables.

Upvotes: 0

Views: 8433

Answers (2)

Royal911
Royal911

Reputation: 1

Here is mine . Rely easy . Just copy the location from the file and copy1 folder to does locations . This is my first program :) . ready proud of it

Imports System.IO

Module Module1

Sub Main()

    For Each Line In File.ReadLines("C:\location.txt".ToArray)

        My.Computer.FileSystem.CopyDirectory("C:\Copy1", Line, True)


    Next
    Console.WriteLine("Done")
    Console.ReadLine()
End Sub

End Module

Upvotes: 0

Victor Zakharov
Victor Zakharov

Reputation: 26424

It is not clear why you would need to have 5 lines stored at any time, according to your code sample, since you are only processing one line at a time. If you think that doing 5 lines at once will be faster - this is unlikely, because .NET maintains caching internally, so both approaches will probably perform the same. However, reading one line at a time is a much more simple pattern to use, so better look into that first.

Still, here is an approximate version of the code that does processing every 5 lines:

Sub Main()
  Dim bufferMaxSize As Integer = 5
  Using xRead As New System.IO.StreamReader(TextBox3.Text)
    Dim buffer As New List(Of String)
    Do Until xRead.EndOfStream
      If buffer.Count < bufferMaxSize Then
        buffer.Add(xRead.ReadLine)
        Continue Do
      Else
        PerformProcessing(buffer)
        buffer.Clear()
      End If
    Loop
    If buffer.Count > 0 Then
      'if line count is not divisible by bufferMaxSize, 5 in this case
      'there will be a remainder of 1-4 records,
      'which also needs to be processed
      PerformProcessing(buffer)
    End If
  End Using
End Sub

Upvotes: 1

Related Questions