code: static boolean load(String path)
      {
          if (loadDat(path)) return true;
          // 从文本中载入并且尝试生成dat
          StringDictionary dictionary = new StringDictionary("=");
          if (!dictionary.load(path)) return false;
          TreeMap<String, Pinyin[]> map = new TreeMap<String, Pinyin[]>();
          for (Map.Entry<String, String> entry : dictionary.entrySet())
          {
              String[] args = entry.getValue().split(",");
              Pinyin[] pinyinValue = new Pinyin[args.length];
              for (int i = 0; i < pinyinValue.length; ++i)
              {
                  try
                  {
                      Pinyin pinyin = Pinyin.valueOf(args[i]);
                      pinyinValue[i] = pinyin;
                  }
                  catch (IllegalArgumentException e)
                  {
                      logger.severe("读取拼音词典" + path + "失败，问题出在【" + entry + "】，异常是" + e);
                      return false;
                  }
              }
              map.put(entry.getKey(), pinyinValue);
          }
          trie.build(map);
          logger.info("正在缓存双数组" + path);
          saveDat(path, trie, map.entrySet());
          return true;
      }
docs: 读取词典
  @param path
  @return