Imports System.IO Public Class FileUtility Private Shared ReadOnly Rnd As New Random(Now.Millisecond) Public Shared Sub RandomizeLines(targetFile As String, Optional randomizeRate As Integer = 10) If randomizeRate < 2 Then randomizeRate = 10 Dim currPath As String = Path.GetDirectoryName(targetFile) Dim currFile As String = Path.Combine(currPath, Path.GetFileNameWithoutExtension(targetFile) & " (Randomized)" & Path.GetExtension(targetFile)) Dim currWriter As String Dim writers() As StreamWriter = {} Array.Resize(writers, randomizeRate) For i As Integer = 0 To randomizeRate - 1 writers(i) = New StreamWriter(Path.Combine(currPath, "temp" & i.ToString & ".txt")) 'With {.AutoFlush = True} Next Using fs As FileStream = File.OpenRead(targetFile) Using sr As New StreamReader(fs) While Not sr.EndOfStream writers(Rnd.Next(randomizeRate)).WriteLine(sr.ReadLine()) End While End Using End Using Using sw As New StreamWriter(currFile) 'With {.AutoFlush = True} For i As Integer = 0 To randomizeRate - 1 writers(i).Dispose() currWriter = Path.Combine(currPath, "temp" & i.ToString & ".txt") Using reader As New StreamReader(currWriter) While Not reader.EndOfStream sw.WriteLine(reader.ReadLine) End While End Using File.Delete(currWriter) Next End Using End Sub Public Shared Sub RandomizeLinesHaze(targetFile As String, Optional randomizeRate As Integer = 10) If randomizeRate < 2 Then randomizeRate = 10 Dim currPath As String = Path.GetDirectoryName(targetFile) Dim currFile As String = Path.Combine(currPath, Path.GetFileNameWithoutExtension(targetFile) & " (Randomized)" & Path.GetExtension(targetFile)) Dim currWriter As String Dim lstWriters As New List(Of StreamWriter) For i As Integer = 0 To randomizeRate - 1 lstWriters.Add(New StreamWriter(Path.Combine(currPath, "temp" & i.ToString & ".txt")) 'With {.AutoFlush = True}) Next Using fs As FileStream = File.OpenRead(targetFile) Using sr As New StreamReader(fs) While Not sr.EndOfStream lstWriters(Rnd.Next(randomizeRate)).WriteLine(sr.ReadLine()) End While End Using End Using Using sw As New StreamWriter(currFile) 'With {.AutoFlush = True} For i As Integer = 0 To randomizeRate - 1 lstWriters(i).Dispose() currWriter = Path.Combine(currPath, "temp" & i.ToString & ".txt") Using reader As New StreamReader(currWriter) While Not reader.EndOfStream sw.WriteLine(reader.ReadLine) End While End Using File.Delete(currWriter) Next End Using End Sub End Class