public static void Save()
{
CheckIfLoaded();
const string tempFileName = Paths.PlayerDBFileName + ".temp";
lock ( SaveLoadLocker ) {
PlayerInfo[] listCopy = PlayerInfoList;
Stopwatch sw = Stopwatch.StartNew();
using (FileStream fs = OpenWrite(tempFileName)) {
using (StreamWriter writer = new StreamWriter(fs, Encoding.UTF8, BufferSize)) {
writer.WriteLine("{0} {1} {2}", maxID, FormatVersion, Header);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < listCopy.Length; i++)
{
listCopy[i].Serialize(sb);
writer.WriteLine(sb.ToString());
sb.Length = 0;
}
}
}
sw.Stop();
Logger.Log(LogType.Debug,
"PlayerDB.Save: Saved player database ({0} records) in {1}ms",
Trie.Count, sw.ElapsedMilliseconds);
try {
Paths.MoveOrReplace(tempFileName, Paths.PlayerDBFileName);
} catch (Exception ex) {
Logger.Log(LogType.Error,
"PlayerDB.Save: An error occured while trying to save PlayerDB: {0}", ex);
}
}
}