Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement