Star... here is how the reading/writing works.
There is a native called PreloadGenEnd that takes a string argument. When this is called, it creates a file on the player's harddrive called the string argument. For example, PreloadGenEnd("hi.txt") creates hi.txt in the wc3 directory.
The Preload command is used to load this file up. It also takes a string argument. If you were to do Preload("I'm saying hi") and then do the PreloadGenEnd above, it would create a text fie with I'm saying hi in it.
You can't read these files directly, but you can run them. These files run both console commands (start -> run -> cmd) and JASS commands. What this means is that, in a way, you can store data into them and retrieve that data. How do you do this? Write SetPlayerName commands into them with the string data =).
For example, if you wanted to save 1234
call Preload("call SetPlayerName(player, 1234)")
Here is an example from the File I/O
JASS:
call PreloadGenClear()
call PreloadGenStart()
call Preload("\")\r\n\tcall SetPlayerName(Player(0), \""+I2S(fileIndex)+"\")\r\n//")
call Preload( "\" )\r\nendfunction\r\nfunction AAA takes nothing returns nothing \r\n//")
call PreloadGenEnd(getDirectory(mapname, playerid, filename))
The first line is always Preloader or something and the last line is always endfunction. Appending another function to the file (in this case AAA) makes the execution of the file faster for some reason.
Anyways, once the player names are set via preloading the JASS code in the file, you can just use GetPlayerName to get the data for each line : ). This limits 1 file to 15 lines though, but this is fine. You can have like an array of files ; P. The old File I/O thing I did had a file with a counter in it. It would create filenames like FILENAME_COUNTER. It'd first get that counter and then go over all of the files (FILENAME_1, FILENAME_2, etc, etc) and get the 15 lines (max 120 chars each line) out of each file.
For this save/load, you need 2 things
1. A Data Sync System (a very good one is up, just gotta debug it so that it's in working order)
2. A File I/O System (gotta write this still, the one up is crap and does crappy syncing + file i/o)
An encryption system using AES is recommended so that players don't tamper with the data. An MD5 checksum is also recommended.