FileDelete(@ScriptDir & '\*.txt')
Global $sTxt, $hFile, $sFile = 'Very_Big_File.txt', $iLimit = 500, $hTmpFile, $iCount, $iRand = Random(400000, 500000, 1)
FileChangeDir(@ScriptDir)
;~ создаем рандомный большой файл Very_Big_File.txt c кол-вом строк $iRand
ConsoleWrite('$iRand: ' & $iRand & @LF)
For $i = 1 To $iRand
$sTxt &= 'Test string number ' & $i & @CRLF
Next
$hFile = FileOpen($sFile, 2)
FileWrite($hFile, StringTrimRight($sTxt, 2))
FileClose($hFile)
$hFile = 0
$sTxt = ''
;~ делим файл Very_Big_File.txt на файлы 1.txt - n.txt по кол-ву строк $iLimit
Local $iTime = TimerInit()
$hFile = FileOpen($sFile)
While 1
$sTxt = ''
For $i = 1 To $iLimit
$sTxt &= FileReadLine($hFile) & @CRLF
If @error Then ExitLoop
Next
$sTxt = StringRegExpReplace($sTxt, '[\r\n]*$', '')
If $sTxt Then
$iCount += 1
$hTmpFile = FileOpen($iCount & '.txt', 2)
FileWrite($hTmpFile, $sTxt)
FileClose($hTmpFile)
Else
ExitLoop
EndIf
WEnd
FileClose($hFile)
ConsoleWrite(StringFormat('Создано файлов: %d. Затрачено %.2f секунд\n', $iCount, TimerDiff($iTime) / 1000))