public void Save(string file)
{
try {
if (m_Records.Count > 0) {
int recordSize = m_Records[0].Length;
int recordNum = m_Records.Count;
for (int i = 1; i < recordNum; ++i) {
if (m_Records[i].Length != recordSize) {
LogSystem.Error("Record Size not equal, {0}!={1}({2})", recordSize, m_Records[i].Length, i);
return;
}
}
using (FileStream fs = new FileStream(file, FileMode.Create, FileAccess.Write, FileShare.None)) {
FileHeader header = new FileHeader(recordNum, recordSize);
WriteFileHeader(fs, header);
for (int i = 0; i < recordNum; ++i) {
fs.Write(m_Records[i], 0, recordSize);
}
header.m_StringOffset = (int)fs.Position;
WriteStrArray(fs, m_StringList.ToArray());
header.m_IntListOffset = (int)fs.Position;
WriteIntArray(fs, m_IntLists.ToArray());
header.m_FloatListOffset = (int)fs.Position;
WriteFloatArray(fs, m_FloatLists.ToArray());
header.m_StrListOffset = (int)fs.Position;
WriteIntArray(fs, m_StrLists.ToArray());
//重写文件头
fs.Position = 0;
WriteFileHeader(fs, header);
fs.Close();
}
}
} catch (Exception ex) {
LogSystem.Error("Exception:{0}\n{1}", ex.Message, ex.StackTrace);
}
}