2017-08-25 13 views
-1

5つの合計チャンクで1つのテキストファイルを分割したいと思っています。私は1つのチャンク上で1つのスレッドを使用することができます。私はvb.netでコードを書いたが、textfileの総行数が5の倍数であれば、私のコードだけが完全なテキストファイル行をカバーする。これで私を案内してください。チャンクでテキストファイルを分割して、すべてのチャンクを個々のスレッドで処理する方法

Private Function breakTextFile(ByVal path As String) 
     Dim allLines As String() = File.ReadAllLines(path) 
     Dim sizeOfFile As Integer = allLines.Length 
     Dim break As Integer = 5, counter As Integer = 0, startline As Integer = 0 
     Dim index As Integer = sizeOfFile/break 
     Dim endline As Integer = 0 
     endline = index 
     Dim listOfStringArray As New List(Of ArrayList) 
     Do While (counter <= break) 
      Dim chunk As New ArrayList 
      For i = startline To (endline - 1) 
       Chunk.Add(allLines(i)) 
      Next 
      listOfStringArray.Add(chunk) 
      startline = endline 
      endline = startline + index 
      counter = counter + 1 
     Loop 
     Return listOfStringArray 
    End Function 
+0

あなたのファイルの行を同じ長さをお持ちですか? – Steve

+0

morelinqのバッチメソッドを使用することができます。https://github.com/morelinq/MoreLINQ/blob/master/MoreLinq/Batch.cs –

+0

スティーブ:いいえ。すべての個々の文字列の線が異なります – Neel

答えて

0
Imports MoreLinq 

Private Function breakTextFile(ByVal path As String) 
     Dim listOfStringArray As New List(Of IEnumerable(Of String)) 
     listOfStringArray = File.ReadLines(textFilePath).Batch(10000).ToList() 
     Return listOfStringArray 
    End Function 
関連する問題