예제 #1
0
        static public void SaveToBinFile(String fileName, T_DictFile dictFile)
        {
            Stream s = CSerialization.SerializeBinary(dictFile);

            s.Position = 0;
            CFile.WriteStream(fileName, (MemoryStream)s);
        }
예제 #2
0
        public void Load(String fileName)
        {
            try
            {
                List <T_ChsNameWordTraffic> newWords = new List <T_ChsNameWordTraffic>();

                if (!File.Exists(fileName))
                {
                    //字典文件不存在
                    return;
                }

                MemoryStream s = CFile.ReadFileToStream(fileName);
                s.Position = 0;
                object obj;
                CSerialization.DeserializeBinary(s, out obj);
                _Traffic = (T_ChsNameTraffic)obj;

                _Traffic.AfterCount      = 0;
                _Traffic.AfterWordCount  = 0;
                _Traffic.BeforeCount     = 0;
                _Traffic.BeforeWordCount = 0;

                //整理姓名前缀后缀表
                foreach (T_ChsNameWordTraffic wordTraffic in _Traffic.Words)
                {
                    if (wordTraffic.Word.Length > 1)
                    {
                        if (wordTraffic.Word[0] >= 0x4e00 && wordTraffic.Word[0] <= 0x9fa5)
                        {
                            //是汉字,且长度大于2,才作为有效前后缀
                            newWords.Add(wordTraffic);

                            if (wordTraffic.After > 0)
                            {
                                _Traffic.AfterCount += wordTraffic.After;
                                _Traffic.AfterWordCount++;
                            }

                            if (wordTraffic.Before > 0)
                            {
                                _Traffic.BeforeCount += wordTraffic.After;
                                _Traffic.BeforeWordCount++;
                            }
                        }
                    }
                }

                _Traffic.Words = newWords;
            }
            catch
            {
                _Traffic = new T_ChsNameTraffic();
            }

            foreach (T_ChsNameWordTraffic wordTraffic in _Traffic.Words)
            {
                _Table[wordTraffic.Word] = wordTraffic;
            }
        }
예제 #3
0
        public void Save(String fileName)
        {
            Stream s = CSerialization.SerializeBinary(_Traffic);

            s.Position = 0;
            CFile.WriteStream(fileName, (MemoryStream)s);
        }
예제 #4
0
        /// <summary>
        /// 从文本文件读取字典
        /// </summary>
        /// <param name="fileName"></param>
        static public T_DictFile LoadFromTextDict(String fileName)
        {
            T_DictFile dictFile = new T_DictFile();

            String dictStr = CFile.ReadFileToString(fileName, "utf-8");

            String[] words = CRegex.Split(dictStr, "\r\n");

            foreach (String word in words)
            {
                String[] wp = CRegex.Split(word, @"\|");

                if (wp == null)
                {
                    continue;
                }

                if (wp.Length != 2)
                {
                    continue;
                }

                int pos = 0;

                try
                {
                    pos = int.Parse(wp[1]);
                }
                catch
                {
                    continue;
                }

                T_DictStruct dict = new T_DictStruct();
                dict.Word = wp[0];
                dict.Pos  = pos;

                if (dict.Word.Contains("一") || dict.Word.Contains("二") ||
                    dict.Word.Contains("三") || dict.Word.Contains("四") ||
                    dict.Word.Contains("五") || dict.Word.Contains("六") ||
                    dict.Word.Contains("七") || dict.Word.Contains("八") ||
                    dict.Word.Contains("九") || dict.Word.Contains("十"))
                {
                    dict.Pos |= (int)T_POS.POS_A_M;
                }

                if (dict.Word == "字典")
                {
                    dict.Pos = (int)T_POS.POS_D_N;
                }

                dictFile.Dicts.Add(dict);
            }

            return(dictFile);
        }
예제 #5
0
        static public T_DictFile LoadFromBinFile(String fileName)
        {
            MemoryStream s = CFile.ReadFileToStream(fileName);

            s.Position = 0;
            object obj;

            CSerialization.DeserializeBinary(s, out obj);
            return((T_DictFile)obj);
        }
예제 #6
0
 protected virtual void WriteLog(string log)
 {
     try
     {
         CFile.WriteLine(LogFileName,
                         string.Format("{0} {1}", DateTime.Now, log), "utf-8");
     }
     catch
     {
     }
 }
예제 #7
0
        static public void SaveToTextFile(String fileNmae, T_DictFile dictFile)
        {
            if (dictFile.Dicts == null)
            {
                return;
            }

            StringBuilder dictStr = new StringBuilder();

            foreach (T_DictStruct dict in dictFile.Dicts)
            {
                dictStr.AppendFormat("{0}|{1}\r\n", dict.Word, dict.Pos);
            }

            CFile.WriteString(fileNmae, dictStr.ToString(), "utf-8");
        }
예제 #8
0
 private CGetCurrentDir()
 {
     System.Diagnostics.Process p = System.Diagnostics.Process.GetCurrentProcess();
     _ProcessDir = p.MainModule.FileName;
     _ProcessDir = CFile.GetPath(_ProcessDir);
 }