Public Function reserveMaintenance(ByRef cache As String, Optional ByRef reserve As String = "", Optional ByRef unique As Boolean = True, Optional ByRef reverse As Boolean = False, Optional ByRef dirty As Boolean = False, Optional ByRef ignoreReserve As Boolean = False) As System.Collections.Generic.List(Of String)
dirty = False
If reserve = "" Then
reserve = reserveFileName(cache, True)
End If
CreateFileIfNotExist(reserve)
Const lowerLimit As Integer = 5000
Const upperLimit As Integer = 20000
Const average = (lowerLimit + upperLimit) \ 2
If System.IO.File.ReadLines(cache).Count > upperLimit Or System.IO.File.ReadLines(cache).Count < lowerLimit Then
Dim colCache = System.IO.File.ReadLines(cache)
Dim colReserve = System.IO.File.ReadLines(reserve)
putStuffIntoFiles(reserveFileName(cache, False, True), colCache, average)
putStuffIntoFiles(reserveFileName(cache, False, True), colReserve, average)
System.IO.File.Delete(cache)
System.IO.File.Delete(reserveFileName(cache))
My.Computer.FileSystem.RenameFile(reserveFileName(cache, False, True), reserveFileName(cache, False, False))
My.Computer.FileSystem.RenameFile(reserveFileName(cache, True, True), reserveFileName(cache, True, False))
End If
Return fileToStringCol(cache)
End Function
Public Sub putStuffIntoFiles(ByVal fileName As String, ByVal colToPut As System.Collections.Generic.IEnumerable(Of String), ByVal limit As Long)
Dim colBuffer = New System.Collections.Generic.List(Of String)
Dim i As Long = 1
CreateFileIfNotExist(fileName)
Dim trueLimit = limit - System.IO.File.ReadLines(fileName).LongCount
Using cacheFile = New System.IO.StreamWriter(fileName, True), cacheReserveFile = New System.IO.StreamWriter(reserveFileName(fileName), True)
For Each var In colToPut
i = i + 1
If i < trueLimit Then
cacheFile.WriteLine(var)
Else
cacheReserveFile.WriteLine(var)
End If
Next
End Using
End Sub