0

テキストファイルを1行ずつ読み取って、テキストファイルの内容をループしようとしています。ループ処理中に、ファイルの内容を使用する必要があることが何度かあります。

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

編集:私がやろうとしているのは、テキスト ファイルの最初の 5 つの項目がランダムな処理を実行してから、テキスト ファイルの次の 5 行を読み取ることです。

テキスト ファイルから取得した行を、分離された文字列変数として使用できるようにしたいと考えています。

4

2 に答える 2

1

コードサンプルによると、一度に1行しか処理しないため、いつでも5行を保存する必要がある理由は明確ではありません。一度に5行を実行する方が高速だと思う場合、.NETは内部でキャッシュを維持するため、これはありそうにありません。したがって、どちらのアプローチもおそらく同じように実行されます。ただし、一度に1行ずつ読み取る方がはるかに単純なパターンであるため、最初にそれをよく調べてください。

それでも、5行ごとに処理を行うコードのおおよそのバージョンは次のとおりです。

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
于 2012-12-16T19:27:26.407 に答える