I see. This is the method he use for reading:
private method loadline takes nothing returns nothing
local integer i
//if there are no more lines in the file, load next file
if (16 == dataIndex) then
set dataIndex = 0
set fileIndex = fileIndex + 1
//store current player names
set i = 15
loop
set pname = GetPlayerName(Player(i))
exitwhen 0 == i
set i = i - 1
endloop
//load file (sets the player names to lines in file)
call Preloader(SAVE_GAME_FOLDER + "\\" + mapName + "\\" + fileName + I2S(fileIndex))
//flush file buffer
call FlushChildHashtable(stringTable, this)
//load lines from file to file buffer and return player names to normal
set i = 15
loop
if (pname != GetPlayerName(Player(i))) then
call SaveStr(stringTable, this, i, SubString(GetPlayerName(Player(i)), 1, StringLength(GetPlayerName(Player(i)))))
call SetPlayerName(Player(i), pname)
elseif (end == -1) then
set end = i
endif
exitwhen 0 == i
set i = i - 1
endloop
endif
//add next line of file to data
set this.data = this.data + LoadStr(stringTable, this, dataIndex)
set dataIndex = dataIndex + 1
endmethod
So he use Preloader(stuff), but yeah it's too advanced for me too understand completely.