public void LoadUserDict(string userDictFile)
{
var dictFullPath = Path.GetFullPath(userDictFile);
Debug.WriteLine("Initializing user dictionary: " + userDictFile);
lock (locker)
{
if (LoadedPath.Contains(dictFullPath))
return;
try
{
var startTime = DateTime.Now.Millisecond;
var lines = File.ReadAllLines(dictFullPath, Encoding.UTF8);
foreach (var line in lines)
{
if (string.IsNullOrWhiteSpace(line))
{
continue;
}
var tokens = RegexUserDict.Match(line.Trim()).Groups;
var word = tokens["word"].Value.Trim();
var freq = tokens["freq"].Value.Trim();
var tag = tokens["tag"].Value.Trim();
var actualFreq = freq.Length > 0 ? int.Parse(freq) : 0;
AddWord(word, actualFreq, tag);
}
Debug.WriteLine("user dict '{0}' load finished, time elapsed {1} ms",
dictFullPath, DateTime.Now.Millisecond - startTime);
}
catch (IOException e)
{
Debug.Fail(string.Format("'{0}' load failure, reason: {1}", dictFullPath, e.Message));
}
catch (FormatException fe)
{
Debug.Fail(fe.Message);
}
}
}