private WordLibraryList ReadScel(string path) { pyDic = new Dictionary<int, string>(); //Dictionary<string, string> pyAndWord = new Dictionary<string, string>(); var pyAndWord = new WordLibraryList(); var fs = new FileStream(path, FileMode.Open, FileAccess.Read); var str = new byte[128]; var outstr = new byte[128]; byte[] num; //以下代码调试用的 //fs.Position = 0x2628; //byte[] debug = new byte[50000]; //fs.Read(debug, 0, 50000); //string txt = Encoding.Unicode.GetString(debug); //调试用代码结束 int hzPosition = 0; fs.Read(str, 0, 128); //\x40\x15\x00\x00\x44\x43\x53\x01 if (str[4] == 0x44) { hzPosition = 0x2628; } if (str[4] == 0x45) { hzPosition = 0x26C4; } fs.Position = 0x124; CountWord = BinFileHelper.ReadInt32(fs); CurrentStatus = 0; //fs.Position = 0x130; //fs.Read(str, 0, 64); //string txt = Encoding.Unicode.GetString(str); ////Console.WriteLine("字库名称:" + txt); //fs.Position = 0x338; //fs.Read(str, 0, 64); ////Console.WriteLine("字库类别:" + Encoding.Unicode.GetString(str)); //fs.Position = 0x540; //fs.Read(str, 0, 64); ////Console.WriteLine("字库信息:" + Encoding.Unicode.GetString(str)); //fs.Position = 0xd40; //fs.Read(str, 0, 64); ////Console.WriteLine("字库示例:" + Encoding.Unicode.GetString(str)); fs.Position = 0x1540; str = new byte[4]; fs.Read(str, 0, 4); //\x9D\x01\x00\x00 while (true) { num = new byte[4]; fs.Read(num, 0, 4); int mark = num[0] + num[1]*256; str = new byte[128]; fs.Read(str, 0, (num[2])); string py = Encoding.Unicode.GetString(str); py = py.Substring(0, py.IndexOf('\0')); pyDic.Add(mark, py); if (py == "zuo") //最后一个拼音 { break; } } var s = new StringBuilder(); foreach (string value in pyDic.Values) { s.Append(value + "\",\""); } Debug.WriteLine(s.ToString()); //fs.Position = 0x2628; fs.Position = hzPosition; while (true) { try { pyAndWord.AddRange(ReadAPinyinWord(fs)); } catch (Exception ex) { Debug.WriteLine(ex.Message); } if (fs.Length == fs.Position) //判断文件结束 { fs.Close(); break; } } return pyAndWord; //var sb = new StringBuilder(); //foreach (WordLibrary w in pyAndWord) //{ // sb.AppendLine("'" + w.PinYinString + " " + w.Word); //以搜狗文本词库的方式返回 //} //return sb.ToString(); }
private WordLibraryList ReadQcel(string path) { pyDic = new Dictionary <int, string>(); //Dictionary<string, string> pyAndWord = new Dictionary<string, string>(); var pyAndWord = new WordLibraryList(); var fs = new FileStream(path, FileMode.Open, FileAccess.Read); var str = new byte[128]; var outstr = new byte[128]; byte[] num; //以下代码调试用的 //fs.Position = 0x2628; //byte[] debug = new byte[50000]; //fs.Read(debug, 0, 50000); //string txt = Encoding.Unicode.GetString(debug); //调试用代码结束 // int hzPosition = 0; fs.Read(str, 0, 128); //\x40\x15\x00\x00\x44\x43\x53\x01 // if (str[4] == 0x44) // { // hzPosition = 0x2628; // } // if (str[4] == 0x45) // { // hzPosition = 0x26C4; // } fs.Position = 0x124; CountWord = BinFileHelper.ReadInt32(fs); CurrentStatus = 0; //fs.Position = 0x130; //fs.Read(str, 0, 64); //string txt = Encoding.Unicode.GetString(str); ////Console.WriteLine("字库名称:" + txt); //fs.Position = 0x338; //fs.Read(str, 0, 64); ////Console.WriteLine("字库类别:" + Encoding.Unicode.GetString(str)); //fs.Position = 0x540; //fs.Read(str, 0, 64); ////Console.WriteLine("字库信息:" + Encoding.Unicode.GetString(str)); //fs.Position = 0xd40; //fs.Read(str, 0, 64); ////Console.WriteLine("字库示例:" + Encoding.Unicode.GetString(str)); fs.Position = 0x1540; str = new byte[4]; fs.Read(str, 0, 4); //\x9D\x01\x00\x00 while (true) { num = new byte[4]; fs.Read(num, 0, 4); int mark = num[0] + num[1] * 256; str = new byte[num[2]]; fs.Read(str, 0, (num[2])); string py = Encoding.Unicode.GetString(str); //py = py.Substring(0, py.IndexOf('\0')); pyDic.Add(mark, py); if (py == "zuo") //最后一个拼音 { break; } } var s = new StringBuilder(); foreach (string value in pyDic.Values) { s.Append(value + "\",\""); } Debug.WriteLine(s.ToString()); fs.Position = 0x2628; //fs.Position = hzPosition; while (true) { try { pyAndWord.AddRange(ReadAPinyinWord(fs)); } catch (Exception ex) { Debug.WriteLine(ex.Message); } if (fs.Length == fs.Position) //判断文件结束 { fs.Close(); break; } } return(pyAndWord); //var sb = new StringBuilder(); //foreach (WordLibrary w in pyAndWord) //{ // sb.AppendLine("'" + w.PinYinString + " " + w.Word); //以搜狗文本词库的方式返回 //} //return sb.ToString(); }
private WordLibraryList ReadScel(string path) { pyDic = new Dictionary <int, string>(); //Dictionary<string, string> pyAndWord = new Dictionary<string, string>(); var pyAndWord = new WordLibraryList(); var fs = new FileStream(path, FileMode.Open, FileAccess.Read); var str = new byte[128]; var outstr = new byte[128]; byte[] num; //调试用代码结束 int hzPosition = 0; fs.Read(str, 0, 128); //\x40\x15\x00\x00\x44\x43\x53\x01 if (str[4] == 0x44) { hzPosition = 0x2628; } if (str[4] == 0x45) { hzPosition = 0x26C4; } fs.Position = 0x124; CountWord = BinFileHelper.ReadInt32(fs); CurrentStatus = 0; fs.Position = 0x1540; str = new byte[4]; fs.Read(str, 0, 4); //\x9D\x01\x00\x00 while (true) { num = new byte[4]; fs.Read(num, 0, 4); int mark = num[0] + num[1] * 256; str = new byte[128]; fs.Read(str, 0, (num[2])); string py = Encoding.Unicode.GetString(str); py = py.Substring(0, py.IndexOf('\0')); pyDic.Add(mark, py); if (py == "zuo") //最后一个拼音 { break; } } var s = new StringBuilder(); foreach (string value in pyDic.Values) { s.Append(value + "\",\""); } Debug.WriteLine(s.ToString()); //fs.Position = 0x2628; fs.Position = hzPosition; while (true) { try { pyAndWord.AddRange(ReadAPinyinWord(fs)); } catch (System.Exception ex) { Debug.WriteLine(ex.Message); } if (fs.Length == fs.Position) //判断文件结束 { fs.Close(); break; } } return(pyAndWord); }