private void SaveToBinFile(String fileName, string verStr)
{
if (verStr.Length > 8)
{
verStr = verStr.Substring(0, 8);
}
using (FileStream fs = new FileStream(fileName, FileMode.Create))
{
byte[] version = new byte[32];
int i = 0;
foreach (byte v in System.Text.Encoding.UTF8.GetBytes("Pan Gu Segment V" + verStr))
{
version[i] = v;
i++;
}
fs.Write(version, 0, version.Length);
foreach (WordAttribute wa in _FirstCharDict.Values)
{
byte[] word = System.Text.Encoding.UTF8.GetBytes(wa.Word);
byte[] pos = System.BitConverter.GetBytes((int)wa.Pos);
byte[] frequency = System.BitConverter.GetBytes(wa.Frequency);
byte[] length = System.BitConverter.GetBytes(word.Length + frequency.Length + pos.Length);
fs.Write(length, 0, length.Length);
fs.Write(word, 0, word.Length);
fs.Write(pos, 0, pos.Length);
fs.Write(frequency, 0, frequency.Length);
}
foreach (WordAttribute wa in _DoubleCharDict.Values)
{
byte[] word = System.Text.Encoding.UTF8.GetBytes(wa.Word);
byte[] pos = System.BitConverter.GetBytes((int)wa.Pos);
byte[] frequency = System.BitConverter.GetBytes(wa.Frequency);
byte[] length = System.BitConverter.GetBytes(word.Length + frequency.Length + pos.Length);
fs.Write(length, 0, length.Length);
fs.Write(word, 0, word.Length);
fs.Write(pos, 0, pos.Length);
fs.Write(frequency, 0, frequency.Length);
}
foreach (WordAttribute wa in _WordDict.Values)
{
byte[] word = System.Text.Encoding.UTF8.GetBytes(wa.Word);
byte[] pos = System.BitConverter.GetBytes((int)wa.Pos);
byte[] frequency = System.BitConverter.GetBytes(wa.Frequency);
byte[] length = System.BitConverter.GetBytes(word.Length + frequency.Length + pos.Length);
fs.Write(length, 0, length.Length);
fs.Write(word, 0, word.Length);
fs.Write(pos, 0, pos.Length);
fs.Write(frequency, 0, frequency.Length);
}
}
}