日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

java实现汉字字典

發(fā)布時間:2023/12/2 综合教程 34 生活家
生活随笔 收集整理的這篇文章主要介紹了 java实现汉字字典 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

環(huán)境:eclipsse, jdk1.6, 沒有使用第三方的包,都是JDK有的。

注意,項目源文件我都使用的是UTF-8的編碼格式,如果不是,代碼里面的漢字注釋會顯示亂碼。

設(shè)置UTF-8:windows->Preferences->General->Workspace 頁面上Text file encoding,選擇Other UTF-8

項目結(jié)構(gòu):

1.字典文件

dic.txt 下載地址:http://download.csdn.net/detail/wssiqi/5056993

這里只摘錄一部分內(nèi)容,里面共收錄了20902個漢字

[plain]?view plaincopy

  1. 19968,一,一,1,1,GGLL,A,yi1,yī??
  2. 19969,丁,一,2,12,SGH,AI,ding1,dīng,zheng1,zhēng??
  3. 19970,丂,一,2,15,GNV,AZVV,kao3,kǎo,qiao3,qiǎo,yu2,yú??
  4. 19971,七,一,2,15,AGN,HD,qi1,qī??
  5. 19972,丄,一,2,21,HGD,IAVV,shang4,shàng??
  6. 19973,丅,一,2,12,GHK,AIAA,xia4,xià??
  7. 19974,丆,一,2,13,DGT,GDAA,han3,hǎn??
  8. 19975,萬,一,3,153,DNV,,wan4,wàn,mo4,mò??
  9. 19976,丈,一,3,134,DYI,AOS,zhang4,zhàng??
  10. 19977,三,一,3,111,DGGG,CD,san1,sān??
  11. 19978,上,一,3,211,HHGG,IDA,shang3,shǎng,shang4,shàng??
  12. 19979,下,一,3,124,GHI,AID,xia4,xià??
  13. 19980,丌,一,3,132,GJK,AND,ji1,jī,qi2,qí??
  14. 19981,不,一,4,1324,GII,GI,fou3,fǒu,bu4,bù??
  15. 19982,與,一,3,151,GNGD,AZA,yu4,yù,yu3,yǔ,yu2,yú??
  16. 19983,丏,一,4,1255,GHNN,AIZY,mian3,miǎn??
  17. 19984,丐,一,4,1215,GHNV,AIZ,gai4,gài??
  18. 19985,丑,一,4,5211,NFD,XED,chou3,chǒu??
  19. 19986,丒,一,4,5341,VYGF,YDSA,chou3,chǒu??

2.Dic.java

[java]?view plaincopy

  1. package?com.siqi.dict;??
  2. ??
  3. import?java.io.BufferedReader;??
  4. import?java.io.ByteArrayInputStream;??
  5. import?java.io.File;??
  6. import?java.io.FileInputStream;??
  7. import?java.io.InputStreamReader;??
  8. import?java.nio.charset.Charset;??
  9. ??
  10. /**?
  11. ?*?漢字本地字典。?<br/>?
  12. ?*?本地字典數(shù)據(jù)來自于<a?href=http://www.zdic.net/search/?c=2>漢典</a>?
  13. ?*?實現(xiàn)了一下常用的需求,例如返回拼音,五筆,拼音首字母,筆畫數(shù)目,筆畫順序。?
  14. ?*??
  15. ?*?@author?siqi?
  16. ?*??
  17. ?*/??
  18. public?class?Dic?{??
  19. ??
  20. ????/**?
  21. ?????*?設(shè)置是否輸出調(diào)試信息?
  22. ?????*/??
  23. ????private?static?boolean?DEBUG?=?true;??
  24. ??
  25. ????/**?
  26. ?????*?默認編碼?
  27. ?????*/??
  28. ????public?static?final?Charset?DEFAULT_CHARSET?=?Charset.forName("UTF-8");??
  29. ??
  30. ????/**?
  31. ?????*?漢字Unicode最小編碼?
  32. ?????*/??
  33. ????public?static?final?int?CN_U16_CODE_MIN?=?0x4e00;??
  34. ??
  35. ????/**?
  36. ?????*?漢字Unicode最大編碼?
  37. ?????*/??
  38. ????public?static?final?int?CN_U16_CODE_MAX?=?0x9fa5;??
  39. ??
  40. ????/**?
  41. ?????*?本地字典文件名?
  42. ?????*/??
  43. ????public?static?final?String?DIC_FILENAME?=?"dic.txt";??
  44. ??
  45. ????/**?
  46. ?????*?字典數(shù)據(jù)?
  47. ?????*/??
  48. ????public?static?byte[]?bytes?=?new?byte[0];??
  49. ??????
  50. ????/**?
  51. ?????*?字典漢字數(shù)目?
  52. ?????*/??
  53. ????public?static?int?count?=?0;??
  54. ??
  55. ????/**?
  56. ?????*?漢字unicode值在一條漢字信息的位置<br/>?
  57. ?????*?漢字信息,例:"25171,打,扌,5,12112,RSH,DAI,da3,dǎ,da2,dá"?
  58. ?????*/??
  59. ????public?static?int?INDEX_UNICODE?=?0;??
  60. ????/**?
  61. ?????*?漢字在一條漢字信息的位置<br/>?
  62. ?????*?漢字信息,例:"25171,打,扌,5,12112,RSH,DAI,da3,dǎ,da2,dá"?
  63. ?????*/??
  64. ????public?static?int?INDEX_CHARACTER?=?1;??
  65. ????/**?
  66. ?????*?漢字部首在一條漢字信息的位置<br/>?
  67. ?????*?漢字信息,例:"25171,打,扌,5,12112,RSH,DAI,da3,dǎ,da2,dá"?
  68. ?????*/??
  69. ????public?static?int?INDEX_BUSHOU?=?2;??
  70. ????/**?
  71. ?????*?漢字筆畫在一條漢字信息的位置<br/>?
  72. ?????*?漢字信息,例:"25171,打,扌,5,12112,RSH,DAI,da3,dǎ,da2,dá"?
  73. ?????*/??
  74. ????public?static?int?INDEX_BIHUA?=?3;??
  75. ????/**?
  76. ?????*?漢字筆畫順序在一條漢字信息的位置<br/>?
  77. ?????*?漢字信息,例:"25171,打,扌,5,12112,RSH,DAI,da3,dǎ,da2,dá"?
  78. ?????*/??
  79. ????public?static?int?INDEX_BISHUN?=?4;??
  80. ????/**?
  81. ?????*?漢字五筆在一條漢字信息的位置<br/>?
  82. ?????*?漢字信息,例:"25171,打,扌,5,12112,RSH,DAI,da3,dǎ,da2,dá"?
  83. ?????*/??
  84. ????public?static?int?INDEX_WUBI?=?5;??
  85. ????/**?
  86. ?????*?漢字鄭碼在一條漢字信息的位置<br/>?
  87. ?????*?漢字信息,例:"25171,打,扌,5,12112,RSH,DAI,da3,dǎ,da2,dá"?
  88. ?????*/??
  89. ????public?static?int?INDEX_ZHENGMA?=?6;??
  90. ????/**?
  91. ?????*?第一個漢字拼音(英文字母)在一條漢字信息的位置<br/>?
  92. ?????*?漢字信息,例:"25171,打,扌,5,12112,RSH,DAI,da3,dǎ,da2,dá"?
  93. ?????*/??
  94. ????public?static?int?INDEX_PINYIN_EN?=?7;??
  95. ????/**?
  96. ?????*?第一個漢字拼音(中文字母)在一條漢字信息的位置<br/>?
  97. ?????*?漢字信息,例:"25171,打,扌,5,12112,RSH,DAI,da3,dǎ,da2,dá"?
  98. ?????*/??
  99. ????public?static?int?INDEX_PINYIN_CN?=?8;??
  100. ??
  101. ????/**?
  102. ?????*?裝載字典?
  103. ?????*/??
  104. ????static?{??
  105. ????????long?time?=?System.currentTimeMillis();??
  106. ??????????
  107. ????????try?{??
  108. ????????????LoadDictionary();??
  109. ????????????count?=?count();??
  110. ????????????if?(DEBUG)?{??
  111. ????????????????System.out.println("成功載入字典"?+?new?File(DIC_FILENAME).getCanonicalPath()?+?"?,用時:"??
  112. ????????????????????????+?(System.currentTimeMillis()?-?time)?+?"毫秒,載入字符數(shù)"+count);??
  113. ????????????}??
  114. ????????}?catch?(Exception?e)?{??
  115. ????????????try?{??
  116. ????????????????System.out.println("載入字典失敗"?+?new?File(DIC_FILENAME).getCanonicalPath()+"\r\n");??
  117. ????????????}?catch?(Exception?e1)?{??
  118. ????????????}??
  119. ????????????e.printStackTrace();??
  120. ????????}??
  121. ??
  122. ????}??
  123. ??
  124. ????/**?
  125. ?????*?獲取漢字unicode值?
  126. ?????*??
  127. ?????*?@param?ch?
  128. ?????*????????????漢字?
  129. ?????*?@return?返回漢字的unicode值?
  130. ?????*?@throws?Exception?
  131. ?????*/??
  132. ????public?static?String?GetUnicode(Character?ch)?throws?Exception?{??
  133. ????????return?GetCharInfo(ch,?INDEX_UNICODE);??
  134. ????}??
  135. ??
  136. ????/**?
  137. ?????*?獲取拼音(英文字母)?
  138. ?????*??
  139. ?????*?@param?ch?
  140. ?????*????????????單個漢字字符?
  141. ?????*?@return?返回漢字的英文字母拼音。如?"大"->"da4"。?
  142. ?????*?@throws?Exception?
  143. ?????*/??
  144. ????public?static?String?GetPinyinEn(Character?ch)?throws?Exception?{??
  145. ????????return?GetCharInfo(ch,?INDEX_PINYIN_EN);??
  146. ????}??
  147. ??
  148. ????/**?
  149. ?????*?返回漢字字符串的拼音(英文字母)?
  150. ?????*??
  151. ?????*?@param?str?
  152. ?????*????????????漢字字符串?
  153. ?????*?@return?返回漢字字符串的拼音。將字符串中的漢字替換成拼音,其他字符不變。拼音中間會有空格。?注意,對于多音字,返回的拼音可能不正確。?
  154. ?????*?@throws?Exception?
  155. ?????*/??
  156. ????public?static?String?GetPinyinEn(String?str)?throws?Exception?{??
  157. ????????StringBuffer?sb?=?new?StringBuffer();??
  158. ????????for?(int?i?=?0;?i?<?str.length();?i++)?{??
  159. ????????????char?ch?=?str.charAt(i);??
  160. ????????????if?(isChineseChar(ch))?{??
  161. ????????????????sb.append(GetPinyinEn(ch)?+?"?");??
  162. ????????????}?else?{??
  163. ????????????????sb.append(ch);??
  164. ????????????}??
  165. ????????}??
  166. ??
  167. ????????return?sb.toString().trim();??
  168. ????}??
  169. ??
  170. ????/**?
  171. ?????*?獲取拼音(中文字母)?
  172. ?????*??
  173. ?????*?@param?ch?
  174. ?????*????????????單個漢字字符?
  175. ?????*?@return?返回漢字的中文字母拼音。如?"打"->"dǎ"。?
  176. ?????*?@throws?Exception?
  177. ?????*/??
  178. ????public?static?String?GetPinyinCn(Character?ch)?throws?Exception?{??
  179. ????????return?GetCharInfo(ch,?INDEX_PINYIN_CN);??
  180. ????}??
  181. ??
  182. ????/**?
  183. ?????*?返回漢字字符串的拼音(中文字母)?
  184. ?????*??
  185. ?????*?@param?str?
  186. ?????*????????????漢字字符串?
  187. ?????*?@return?返回漢字字符串的拼音。將字符串中的漢字替換成拼音,其他字符不變。拼音中間會有空格。?注意,對于多音字,返回的拼音可能不正確。?
  188. ?????*?@throws?Exception?
  189. ?????*/??
  190. ????public?static?String?GetPinyinCn(String?str)?throws?Exception?{??
  191. ????????StringBuffer?sb?=?new?StringBuffer();??
  192. ????????for?(int?i?=?0;?i?<?str.length();?i++)?{??
  193. ????????????char?ch?=?str.charAt(i);??
  194. ????????????if?(isChineseChar(ch))?{??
  195. ????????????????sb.append(GetPinyinCn(ch)?+?"?");??
  196. ????????????}?else?{??
  197. ????????????????sb.append(ch);??
  198. ????????????}??
  199. ????????}??
  200. ??
  201. ????????return?sb.toString().trim();??
  202. ????}??
  203. ??
  204. ????/**?
  205. ?????*?返回拼音首字母?
  206. ?????*??
  207. ?????*?@param?ch?
  208. ?????*?@return?
  209. ?????*?@throws?Exception?
  210. ?????*/??
  211. ????public?static?String?GetFirstLetter(Character?ch)?throws?Exception?{??
  212. ????????if?(isChineseChar(ch))?{??
  213. ????????????return?GetPinyinEn(ch).substring(0,?1);??
  214. ????????}?else?{??
  215. ????????????return?"";??
  216. ????????}??
  217. ????}??
  218. ??
  219. ????/**?
  220. ?????*?返回漢字字符串拼音首字母,如果不是漢字,會被忽略掉。?
  221. ?????*??
  222. ?????*?@param?str?
  223. ?????*????????????漢字字符串?
  224. ?????*?@return?
  225. ?????*?@throws?Exception?
  226. ?????*/??
  227. ????public?static?String?GetFirstLetter(String?str)?throws?Exception?{??
  228. ????????StringBuffer?sb?=?new?StringBuffer();??
  229. ????????for?(int?i?=?0;?i?<?str.length();?i++)?{??
  230. ????????????char?ch?=?str.charAt(i);??
  231. ????????????if?(isChineseChar(ch))?{??
  232. ????????????????sb.append(GetFirstLetter(ch));??
  233. ????????????}??
  234. ????????}??
  235. ??
  236. ????????return?sb.toString().trim();??
  237. ????}??
  238. ??
  239. ????/**?
  240. ?????*?獲取漢字部首?
  241. ?????*??
  242. ?????*?@param?ch?
  243. ?????*????????????漢字?
  244. ?????*?@return?返回漢字的部首?
  245. ?????*?@throws?Exception?
  246. ?????*/??
  247. ????public?static?String?GetBushou(Character?ch)?throws?Exception?{??
  248. ????????return?GetCharInfo(ch,?INDEX_BUSHOU);??
  249. ????}??
  250. ??
  251. ????/**?
  252. ?????*?獲取漢字筆畫數(shù)目?
  253. ?????*??
  254. ?????*?@param?ch?
  255. ?????*????????????漢字?
  256. ?????*?@return?返回漢字的筆畫數(shù)目?
  257. ?????*?@throws?Exception?
  258. ?????*/??
  259. ????public?static?String?GetBihua(Character?ch)?throws?Exception?{??
  260. ????????return?GetCharInfo(ch,?INDEX_BIHUA);??
  261. ????}??
  262. ??
  263. ????/**?
  264. ?????*?獲取漢字筆畫順序?
  265. ?????*??
  266. ?????*?@param?ch?
  267. ?????*????????????漢字?
  268. ?????*?@return?返回漢字的筆畫順序?
  269. ?????*?@throws?Exception?
  270. ?????*/??
  271. ????public?static?String?GetBishun(Character?ch)?throws?Exception?{??
  272. ????????return?GetCharInfo(ch,?INDEX_BISHUN);??
  273. ????}??
  274. ??
  275. ????/**?
  276. ?????*?獲取漢字五筆?
  277. ?????*??
  278. ?????*?@param?ch?
  279. ?????*????????????漢字?
  280. ?????*?@return?返回漢字五筆?
  281. ?????*?@throws?Exception?
  282. ?????*/??
  283. ????public?static?String?GetWubi(Character?ch)?throws?Exception?{??
  284. ????????return?GetCharInfo(ch,?INDEX_WUBI);??
  285. ????}??
  286. ??
  287. ????/**?
  288. ?????*?獲取漢字鄭碼?
  289. ?????*??
  290. ?????*?@param?ch?
  291. ?????*????????????漢字?
  292. ?????*?@return?返回漢字鄭碼?
  293. ?????*?@throws?Exception?
  294. ?????*/??
  295. ????public?static?String?GetZhengma(Character?ch)?throws?Exception?{??
  296. ????????return?GetCharInfo(ch,?INDEX_ZHENGMA);??
  297. ????}??
  298. ??
  299. ????/**?
  300. ?????*?從字典中獲取漢字信息?
  301. ?????*??
  302. ?????*?@param?ch?
  303. ?????*????????????要查詢的漢字?
  304. ?????*?@return?返回漢字信息,如"25171,打,扌,5,12112,RSH,DAI,da3,dǎ,da2,dá"?<br/>?
  305. ?????*?????????第一是漢字unicode值<br/>?
  306. ?????*?????????第二是漢字<br/>?
  307. ?????*?????????第三是漢字部首<br/>?
  308. ?????*?????????第四是漢字筆畫<br/>?
  309. ?????*?????????第五是漢字筆畫順序("12345"分別代表"橫豎撇捺折")<br/>?
  310. ?????*?????????第六是漢字五筆<br/>?
  311. ?????*?????????第七是漢字鄭碼<br/>?
  312. ?????*?????????第八及以后是漢字的拼音(英文字母拼音和中文字母拼音)<br/>?
  313. ?????*?@throws?Exception?
  314. ?????*/??
  315. ????public?static?String?GetCharInfo(Character?ch)?throws?Exception?{??
  316. ????????if?(!isChineseChar(ch))?{??
  317. ????????????throw?new?Exception("'"?+?ch?+?"'?不是一個漢字!");??
  318. ????????}??
  319. ??
  320. ????????String?result?=?"";??
  321. ??
  322. ????????ByteArrayInputStream?bais?=?new?ByteArrayInputStream(bytes);??
  323. ????????BufferedReader?br?=?new?BufferedReader(new?InputStreamReader(bais));??
  324. ??
  325. ????????String?strWord;??
  326. ????????while?((strWord?=?br.readLine())?!=?null)?{??
  327. ????????????if?(strWord.startsWith(String.valueOf(ch.hashCode())))?{??
  328. ????????????????result?=?strWord;??
  329. ????????????????break;??
  330. ????????????}??
  331. ????????}??
  332. ????????br.close();??
  333. ????????bais.close();??
  334. ??
  335. ????????return?result;??
  336. ????}??
  337. ??
  338. ????/**?
  339. ?????*?返回漢字信息?
  340. ?????*??
  341. ?????*?@param?ch?
  342. ?????*????????????漢字?
  343. ?????*?@param?index?
  344. ?????*????????????信息所在的Index?
  345. ?????*?@return?
  346. ?????*?@throws?Exception?
  347. ?????*/??
  348. ????private?static?String?GetCharInfo(Character?ch,?int?index)?throws?Exception?{??
  349. ????????if?(!isChineseChar(ch))?{??
  350. ????????????throw?new?Exception("'"?+?ch?+?"'?不是一個漢字!");??
  351. ????????}??
  352. ??
  353. ????????//?獲取漢字信息??
  354. ????????String?charInfo?=?GetCharInfo(ch);??
  355. ??
  356. ????????String?result?=?"";??
  357. ????????try?{??
  358. ????????????result?=?charInfo.split(",")[index];??
  359. ????????}?catch?(Exception?e)?{??
  360. ????????????throw?new?Exception("請查看字典中"?+?ch?+?"漢字記錄是否正確!");??
  361. ????????}??
  362. ??
  363. ????????return?result;??
  364. ????}??
  365. ??
  366. ????/**?
  367. ?????*?載入字典文件到內(nèi)存。?
  368. ?????*?@throws?Exception??
  369. ?????*/??
  370. ????private?static?void?LoadDictionary()?throws?Exception?{??
  371. ????????File?file?=?new?File(DIC_FILENAME);??
  372. ????????bytes?=?new?byte[(int)?file.length()];??
  373. ????????FileInputStream?fis?=?new?FileInputStream(file);??
  374. ????????fis.read(bytes,?0,?bytes.length);??
  375. ????????fis.close();??
  376. ????}??
  377. ??
  378. ????/**?
  379. ?????*?判斷字符是否為漢字,在測試的時候,我發(fā)現(xiàn)漢字的字符的hashcode值?跟漢字Unicode?
  380. ?????*?16的值一樣,所以可以用hashcode來判斷是否為漢字。?
  381. ?????*??
  382. ?????*?@param?ch?
  383. ?????*????????????漢字?
  384. ?????*?@return?是漢字返回true,否則返回false。?
  385. ?????*/??
  386. ????public?static?boolean?isChineseChar(Character?ch)?{??
  387. ????????if?(ch.hashCode()?>=?CN_U16_CODE_MIN??
  388. ????????????????&&?ch.hashCode()?<=?CN_U16_CODE_MAX)?{??
  389. ????????????return?true;??
  390. ????????}?else?{??
  391. ????????????return?false;??
  392. ????????}??
  393. ????}??
  394. ??
  395. ????/**?
  396. ?????*??
  397. ?????*?@return?返回字典包含的漢字數(shù)目。?
  398. ?????*?@throws?Exception?
  399. ?????*/??
  400. ????private?static?int?count()?throws?Exception?{??
  401. ????????int?cnt?=?0;??
  402. ????????ByteArrayInputStream?bais?=?new?ByteArrayInputStream(bytes);??
  403. ????????BufferedReader?br?=?new?BufferedReader(new?InputStreamReader(bais));??
  404. ??
  405. ????????while?(br.readLine()?!=?null)?{??
  406. ????????????cnt++;??
  407. ????????}??
  408. ????????br.close();??
  409. ????????bais.close();??
  410. ??
  411. ????????return?cnt;??
  412. ????}??
  413. }??

3.Sample.java

如何使用字典

[java]?view plaincopy

  1. package?com.siqi.dict;??
  2. ??
  3. /**?
  4. ?*?包含兩個實例,示例如何獲取漢字的拼音等信息。?
  5. ?*?@author?siqi?
  6. ?*?
  7. ?*/??
  8. public?class?Sample?{??
  9. ??
  10. ????/**?
  11. ?????*?字典使用實例?
  12. ?????*??
  13. ?????*?@param?args?
  14. ?????*/??
  15. ????public?static?void?main(String[]?args)?{??
  16. ????????try?{??
  17. ????????????long?time?=?System.currentTimeMillis();??
  18. ??
  19. ????????????char?ch?=?'打';??
  20. ????????????//漢字單個字符??
  21. ????????????System.out.println("====打字信息開始====");??
  22. ????????????System.out.println("首字母:"+Dic.GetFirstLetter(ch));??
  23. ????????????System.out.println("拼音(中):"+Dic.GetPinyinCn(ch));??
  24. ????????????System.out.println("拼音(英):"+Dic.GetPinyinEn(ch));??
  25. ????????????System.out.println("部首:"+Dic.GetBushou(ch));??
  26. ????????????System.out.println("筆畫數(shù)目:"+Dic.GetBihua(ch));??
  27. ????????????System.out.println("筆畫:"+Dic.GetBishun(ch));??
  28. ????????????System.out.println("五筆:"+Dic.GetWubi(ch));??
  29. ????????????System.out.println("====打字信息結(jié)束====");??
  30. ??????????????
  31. ????????????//漢字字符串??
  32. ????????????System.out.println("\r\n====漢字字符串====");??
  33. ????????????System.out.println(Dic.GetPinyinEn("返回漢字字符串的拼音。"));??
  34. ????????????System.out.println(Dic.GetPinyinCn("返回漢字字符串的拼音。"));??
  35. ????????????System.out.println(Dic.GetFirstLetter("返回漢字字符串的拼音。"));??
  36. ????????????System.out.println("====漢字字符串====\r\n");??
  37. ??????????????
  38. ????????????System.out.println("用時:"+(System.currentTimeMillis()-time)+"毫秒");??
  39. ??????????????
  40. ????????}?catch?(Exception?e)?{??
  41. ????????????e.printStackTrace();??
  42. ????????}??
  43. ??
  44. ????}??
  45. }??

4.結(jié)果

[html]?view plaincopy

  1. ====打字信息開始====??
  2. 成功載入字典C:\workspaces\01_java\DictLocal\dic.txt?,用時:15毫秒,載入字符數(shù)20902??
  3. 首字母:d??
  4. 拼音(中):dǎ??
  5. 拼音(英):da3??
  6. 部首:扌??
  7. 筆畫數(shù)目:5??
  8. 筆畫:12112??
  9. 五筆:RSH??
  10. ====打字信息結(jié)束====??
  11. ??
  12. ====漢字字符串====??
  13. fan3?hui2?han4?zi4?zi4?fu2?chuan4?di2?pin1?yin1?。??
  14. fǎn?huí?hàn?zì?zì?fú?chuàn?dí?pīn?yīn?。??
  15. fhhzzfcdpy??
  16. ====漢字字符串====??
  17. ??
  18. Memory(Used/Total)?:?1539/15872?KB??
  19. 用時:218毫秒??

待會再上傳如何獲取字典文件的,我是通過收集http://www.zdic.net/zd/的網(wǎng)頁來獲取的

=============補充,如何獲取漢字的信息================

=============所有的信息都是從漢典網(wǎng)站上獲取的=========

目錄結(jié)構(gòu)為:

環(huán)境:eclipsse, jdk1.6, 沒有使用第三方的包,都是JDK有的。

注意,項目源文件我都使用的是UTF-8的編碼格式,如果不是,代碼里面的漢字注釋會顯示亂碼。

設(shè)置UTF-8:windows->Preferences->General->Workspace 頁面上Text file encoding,選擇Other UTF-8

包說明:

com.siqi.http

? ? Httpclient.Java是我寫的一個簡單的獲取網(wǎng)頁的類,用來獲取網(wǎng)頁內(nèi)容;

com.siqi.dict

? ? DictMain.java用來下載漢字網(wǎng)頁,從中獲取漢字的拼音信息,并保存到data.dat中

? ? DownloadThread.java用來下載網(wǎng)頁(多線程)

com.siqi.pinyin

? ? PinYin.java在執(zhí)行過DictMain.java后,會生成一個data.dat,把這個文件拷貝到com.siqi.pinyin包下面,就可以調(diào)用PinYin.java里面的函數(shù)得到漢字的拼音了

? ? PinYinEle.java一個漢字->拼音->Unicode的模型

源碼:

Httpclient.java 可以用來獲取網(wǎng)頁,可以的到網(wǎng)頁內(nèi)容,網(wǎng)頁編碼和網(wǎng)頁的header,簡版

[java]?view plaincopy

  1. package?com.siqi.http;??
  2. ??
  3. import?java.io.IOException;??
  4. import?java.io.InputStream;??
  5. import?java.net.Socket;??
  6. import?java.net.URLEncoder;??
  7. import?java.util.regex.Matcher;??
  8. import?java.util.regex.Pattern;??
  9. ??
  10. /**?
  11. ?*?使用SOCKET實現(xiàn)簡單的網(wǎng)頁GET和POST?
  12. ?*??
  13. ?*?@author?siqi?
  14. ?*??
  15. ?*/??
  16. public?class?Httpclient?{??
  17. ??
  18. ????/**?
  19. ?????*?processUrl?參數(shù)?HTTP?GET?
  20. ?????*/??
  21. ????public?static?final?int?METHOD_GET?=?0;??
  22. ????/**?
  23. ?????*?processUrl?參數(shù)?HTTP?POST?
  24. ?????*/??
  25. ????public?static?final?int?METHOD_POST?=?1;??
  26. ????/**?
  27. ?????*?HTTP?GET的報頭,簡化版?
  28. ?????*/??
  29. ????public?static?final?String?HEADER_GET?=?"GET?%s?HTTP/1.0\r\nHOST:?%s\r\n\r\n";??
  30. ????/**?
  31. ?????*?HTTP?POST的報頭,簡化版?
  32. ?????*/??
  33. ????public?static?final?String?HEADER_POST?=?"POST?%s?HTTP/1.0\r\nHOST:?%s\r\nContent-Length:?0\r\n\r\n";??
  34. ????/**?
  35. ?????*?網(wǎng)頁報頭和內(nèi)容的分割符?
  36. ?????*/??
  37. ????public?static?final?String?CONTENT_SEPARATOR?=?"\r\n\r\n";??
  38. ????/**?
  39. ?????*?網(wǎng)頁請求響應內(nèi)容byte?
  40. ?????*/??
  41. ????private?byte[]?bytes?=?new?byte[0];??
  42. ????/**?
  43. ?????*?網(wǎng)頁報頭?
  44. ?????*/??
  45. ????private?String?header?=?"";??
  46. ????/**?
  47. ?????*?網(wǎng)頁內(nèi)容?
  48. ?????*/??
  49. ????private?String?content?=?"";??
  50. ??
  51. ????/**?
  52. ?????*?網(wǎng)頁編碼,默認為UTF-8?
  53. ?????*/??
  54. ????public?static?final?String?CHARSET_DEFAULT?=?"UTF-8";??
  55. ????/**?
  56. ?????*?網(wǎng)頁編碼?
  57. ?????*/??
  58. ????private?String?charset?=?CHARSET_DEFAULT;??
  59. ??
  60. ????/**?
  61. ?????*?使用Httpclient的例子?
  62. ?????*??
  63. ?????*?@param?args?
  64. ?????*?@throws?Exception?
  65. ?????*/??
  66. ????public?static?void?main(String[]?args)?throws?Exception?{??
  67. ????????Httpclient?httpclient?=?new?Httpclient();??
  68. ????????//?請求百度首頁(手機版)??
  69. ????????httpclient.processUrl("http://m.baidu.com/");??
  70. ????????System.out.println("獲取網(wǎng)頁http://m.baidu.com/");??
  71. ????????System.out.println("報頭為:\r\n"?+?httpclient.getHeader());??
  72. ????????System.out.println("內(nèi)容為:\r\n"?+?httpclient.getContent());??
  73. ????????System.out.println("編碼為:\r\n"?+?httpclient.getCharset());??
  74. ????????System.out.println("************************************");??
  75. ??
  76. ????????//?使用百度搜索"中國"(手機版)??
  77. ????????//?這是手機百度搜索框的源碼?<input?id="word"?type="text"?size="20"?maxlength="64"??
  78. ????????//?name="word">??
  79. ????????String?url?=?String.format("http://m.baidu.com/s?word=%s",??
  80. ????????????????URLEncoder.encode("中國",?CHARSET_DEFAULT));??
  81. ????????httpclient.processUrl(url,?METHOD_POST);??
  82. ????????System.out.println("獲取網(wǎng)頁http://m.baidu.com/s?word=中國");??
  83. ????????System.out.println("報頭為:\r\n"?+?httpclient.getHeader());??
  84. ????????System.out.println("內(nèi)容為:\r\n"?+?httpclient.getContent());??
  85. ????????System.out.println("編碼為:\r\n"?+?httpclient.getCharset());??
  86. ????}??
  87. ??
  88. ????/**?
  89. ?????*?初始化,設(shè)置所有變量為默認值?
  90. ?????*/??
  91. ????private?void?init()?{??
  92. ????????this.bytes?=?new?byte[0];??
  93. ????????this.charset?=?CHARSET_DEFAULT;??
  94. ????????this.header?=?"";??
  95. ????????this.content?=?"";??
  96. ??
  97. ????}??
  98. ??
  99. ????/**?
  100. ?????*?獲取網(wǎng)頁報頭header?
  101. ?????*??
  102. ?????*?@return?
  103. ?????*/??
  104. ????public?String?getHeader()?{??
  105. ????????return?header;??
  106. ????}??
  107. ??
  108. ????/**?
  109. ?????*?獲取網(wǎng)頁內(nèi)容content?
  110. ?????*??
  111. ?????*?@return?
  112. ?????*/??
  113. ????public?String?getContent()?{??
  114. ????????return?content;??
  115. ????}??
  116. ??
  117. ????/**?
  118. ?????*?獲取網(wǎng)頁編碼?
  119. ?????*??
  120. ?????*?@return?
  121. ?????*/??
  122. ????public?String?getCharset()?{??
  123. ????????return?charset;??
  124. ????}??
  125. ??
  126. ????/**?
  127. ?????*?請求網(wǎng)頁內(nèi)容(使用HTTP?GET)?
  128. ?????*??
  129. ?????*?@param?url?
  130. ?????*?@throws?Exception?
  131. ?????*/??
  132. ????public?void?processUrl(String?url)?throws?Exception?{??
  133. ????????processUrl(url,?METHOD_GET);??
  134. ????}??
  135. ??
  136. ????/**?
  137. ?????*?使用Socket請求(獲取)一個網(wǎng)頁。<br/>?
  138. ?????*?例如:<br/>?
  139. ?????*?processUrl("http://www.baidu.com/",?METHOD_GET)會獲取百度首頁;<br/>?
  140. ?????*??
  141. ?????*?@param?url?
  142. ?????*????????????這個網(wǎng)頁或者網(wǎng)頁內(nèi)容的地址?
  143. ?????*?@param?method?
  144. ?????*????????????請求網(wǎng)頁的方法:?METHOD_GET或者METHOD_POST?
  145. ?????*?@throws?Exception?
  146. ?????*/??
  147. ????public?void?processUrl(String?url,?int?method)?throws?Exception?{??
  148. ??
  149. ????????init();??
  150. ??
  151. ????????//?url?=?"http://www.zdic.net/search/?c=2&q=%E5%A4%A7";??
  152. ????????//?規(guī)范化鏈接,當網(wǎng)址為http://www.baidu.com時,將網(wǎng)址變?yōu)?#xff1a;http://www.baidu.com/??
  153. ????????Matcher?mat?=?Pattern.compile("https?://[^/]+").matcher(url);??
  154. ????????if?(mat.find()?&&?mat.group().equals(url))?{??
  155. ????????????url?+=?"/";??
  156. ????????}??
  157. ??
  158. ????????Socket?socket?=?new?Socket(getHostUrl(url),?80);?//?設(shè)置要連接的服務器地址??
  159. ????????socket.setSoTimeout(3000);?//?設(shè)置超時時間為3秒??
  160. ??
  161. ????????String?request?=?null;??
  162. ????????//?構(gòu)造請求,詳情請參考HTTP協(xié)議(RFC2616)??
  163. ????????if?(method?==?METHOD_POST)?{??
  164. ????????????request?=?String.format(HEADER_POST,?getSubUrl(url),??
  165. ????????????????????getHostUrl(url));??
  166. ????????}?else?{??
  167. ????????????request?=?String??
  168. ????????????????????.format(HEADER_GET,?getSubUrl(url),?getHostUrl(url));??
  169. ????????}??
  170. ??
  171. ????????socket.getOutputStream().write(request.getBytes());//?發(fā)送請求??
  172. ??
  173. ????????this.bytes?=?InputStream2ByteArray(socket.getInputStream());//?讀取響應??
  174. ??
  175. ????????//?獲取網(wǎng)頁編碼,我們只需要測試查找前4096個字節(jié),一般編碼信息都會在里面找到??
  176. ????????String?temp?=?new?String(this.bytes,?0,??
  177. ????????????????bytes.length?<?4096???bytes.length?:?4096);??
  178. ????????mat?=?Pattern.compile("(?<=<meta.{0,100}?charset=)[a-z-0-9]*",??
  179. ????????????????Pattern.CASE_INSENSITIVE).matcher(temp);??
  180. ????????if?(mat.find())?{??
  181. ????????????this.charset?=?mat.group();??
  182. ????????}?else?{??
  183. ????????????this.charset?=?CHARSET_DEFAULT;??
  184. ????????}??
  185. ??
  186. ????????//?用正確的編碼得到網(wǎng)頁報頭和內(nèi)容??
  187. ????????temp?=?new?String(this.bytes,?this.charset);??
  188. ????????int?headerEnd?=?temp.indexOf(CONTENT_SEPARATOR);??
  189. ????????this.header?=?temp.substring(0,?headerEnd);??
  190. ????????this.content?=?temp.substring(headerEnd?+?CONTENT_SEPARATOR.length(),??
  191. ????????????????temp.length());??
  192. ??
  193. ????????socket.close();?//?關(guān)閉socket??
  194. ????}??
  195. ??
  196. ????/**?
  197. ?????*?根據(jù)網(wǎng)址,獲取服務器地址<br/>?
  198. ?????*?例如:<br/>?
  199. ?????*?http://m.weathercn.com/common/province.jsp?
  200. ?????*?<p>?
  201. ?????*?返回:<br/>?
  202. ?????*?m.weathercn.com?
  203. ?????*??
  204. ?????*?@param?url?
  205. ?????*????????????網(wǎng)址?
  206. ?????*?@return?
  207. ?????*/??
  208. ????public?static?String?getHostUrl(String?url)?{??
  209. ????????String?host?=?"";??
  210. ????????Matcher?mat?=?Pattern.compile("(?<=https?://).+?(?=/)").matcher(url);??
  211. ????????if?(mat.find())?{??
  212. ????????????host?=?mat.group();??
  213. ????????}??
  214. ??
  215. ????????return?host;??
  216. ????}??
  217. ??
  218. ????/**?
  219. ?????*?根據(jù)網(wǎng)址,獲取網(wǎng)頁路徑?例如:<br/>?
  220. ?????*?http://m.weathercn.com/common/province.jsp?
  221. ?????*?<p>?
  222. ?????*?返回:<br/>?
  223. ?????*?/common/province.jsp?
  224. ?????*??
  225. ?????*?@param?url?
  226. ?????*?@return?如果沒有獲取到網(wǎng)頁路徑,返回"";?
  227. ?????*/??
  228. ????public?static?String?getSubUrl(String?url)?{??
  229. ????????String?subUrl?=?"";??
  230. ????????Matcher?mat?=?Pattern.compile("https?://.+?(?=/)").matcher(url);??
  231. ????????if?(mat.find())?{??
  232. ????????????subUrl?=?url.substring(mat.group().length());??
  233. ????????}??
  234. ??
  235. ????????return?subUrl;??
  236. ????}??
  237. ??
  238. ????/**?
  239. ?????*?將b1和b2兩個byte數(shù)組拼接成一個,?結(jié)果=b1+b2?
  240. ?????*??
  241. ?????*?@param?b1?
  242. ?????*?@param?b2?
  243. ?????*?@return?
  244. ?????*/??
  245. ????public?static?byte[]?ByteArrayCat(byte[]?b1,?byte[]?b2)?{??
  246. ????????byte[]?b?=?new?byte[b1.length?+?b2.length];??
  247. ????????System.arraycopy(b1,?0,?b,?0,?b1.length);??
  248. ????????System.arraycopy(b2,?0,?b,?b1.length,?b2.length);??
  249. ????????return?b;??
  250. ????}??
  251. ??
  252. ????/**?
  253. ?????*?讀取輸入流并轉(zhuǎn)為byte數(shù)組,不返回字符串,?是因為輸入流的編碼不確定,錯誤的編碼會造成亂碼。?
  254. ?????*??
  255. ?????*?@param?is?
  256. ?????*????????????輸入流inputstream?
  257. ?????*?@return?字符串?
  258. ?????*?@throws?IOException?
  259. ?????*/??
  260. ????public?static?byte[]?InputStream2ByteArray(InputStream?is)??
  261. ????????????throws?IOException?{??
  262. ????????byte[]?b?=?new?byte[0];??
  263. ????????byte[]?bb?=?new?byte[4096];?//?緩沖區(qū)??
  264. ??
  265. ????????int?len?=?0;??
  266. ????????while?((len?=?is.read(bb))?!=?-1)?{??
  267. ????????????byte[]?newb?=?new?byte[b.length?+?len];??
  268. ????????????System.arraycopy(b,?0,?newb,?0,?b.length);??
  269. ????????????System.arraycopy(bb,?0,?newb,?b.length,?len);??
  270. ????????????b?=?newb;??
  271. ????????}??
  272. ??
  273. ????????return?b;??
  274. ????}??
  275. }??


DictMain.java

[java]?view plaincopy

  1. package?com.siqi.dict;??
  2. ??
  3. import?java.io.File;??
  4. import?java.io.FileReader;??
  5. import?java.io.FileWriter;??
  6. import?java.io.IOException;??
  7. import?java.util.regex.Matcher;??
  8. import?java.util.regex.Pattern;??
  9. ??
  10. /**?
  11. ?*?從漢典下載漢字網(wǎng)頁,并提取拼音信息?
  12. ?*?@author?siqi?
  13. ?*?
  14. ?*/??
  15. public?class?DictMain?{??
  16. ????/**?
  17. ?????*?網(wǎng)頁保存路徑?
  18. ?????*/??
  19. ????public?static?final?String?SAVEPATH?=?"dict/pages/";??
  20. ????/**?
  21. ?????*?下載的漢字網(wǎng)頁名稱?
  22. ?????*/??
  23. ????public?static?final?String?FILEPATH?=?SAVEPATH?+?"%s.html";??
  24. ??????
  25. ????/**?
  26. ?????*?字典數(shù)據(jù)文件名稱?
  27. ?????*/??
  28. ????public?static?final?String?DATA_FILENAME?=?"data.txt";??
  29. ??????
  30. ????/**?
  31. ?????*?漢字unicode最小?
  32. ?????*/??
  33. ????public?static?final?int?UNICODE_MIN?=?0x4E00;??
  34. ??????
  35. ????/**?
  36. ?????*?漢字unicode最大?
  37. ?????*/??
  38. ????public?static?final?int?UNICODE_MAX?=?0x9FFF;??
  39. ??????
  40. ????/**?
  41. ?????*?準備工作:?
  42. ?????*?1.從漢典網(wǎng)站下載所有漢字的頁面,注意,不要在eclipse中打開保存頁面的文件夾,?
  43. ?????*?因為每個漢字一個頁面,總共有20000+個頁面,容易卡死eclipse?
  44. ?????*?2.從漢字頁面獲取漢字拼音信息,生成data.dat文件?
  45. ?????*?3.生成的data.dat復制到com.siqi.pinyin下面?
  46. ?????*?4.可以使用com.siqi.pinyin.PinYin.java了?
  47. ?????*/??
  48. ????static{??
  49. ????????//?下載網(wǎng)頁??
  50. ????????for?(int?i?=?UNICODE_MIN;?i?<=?UNICODE_MAX;?i++)?{??
  51. ????????????//?檢查是否已經(jīng)存在??
  52. ????????????String?filePath?=?String.format(FILEPATH,?i);?//?文件名??
  53. ????????????File?file?=?new?File(filePath);??
  54. ????????????if?(!file.exists())?{??
  55. ????????????????new?DownloadThread(i).start();??
  56. ????????????}??
  57. ????????}??
  58. ??????????
  59. ????????//解析網(wǎng)頁,得到拼音信息,并保存到data.dat??
  60. ????????StringBuffer?sb?=?new?StringBuffer();??
  61. ????????for?(int?i?=?UNICODE_MIN;?i?<=?UNICODE_MAX;?i++)?{??
  62. ????????????String?word?=?new?String(Character.toChars(i));??
  63. ????????????String?pinyin?=?getPinYinFromWebpageFile(String.format(FILEPATH,?i));??
  64. ????????????String?str?=?String.format("%s,%s,%s\r\n",?i,word,pinyin);??
  65. ????????????System.out.print(str);??
  66. ????????????sb.append(str);??
  67. ????????}??
  68. ??????????
  69. ????????//保存到data.dat??
  70. ????????try?{??
  71. ????????????FileWriter?fw?=?new?FileWriter(DATA_FILENAME);??
  72. ????????????fw.write(sb.toString());??
  73. ????????????fw.close();??
  74. ????????}?catch?(IOException?e)?{??
  75. ????????????e.printStackTrace();??
  76. ????????}??
  77. ??????????
  78. ????}??
  79. ??????
  80. ????public?static?void?main(String[]?args){??
  81. ??????????
  82. ????????System.out.println("All?prepared!");??
  83. ????}??
  84. ??????
  85. ????/**?
  86. ?????*?從網(wǎng)頁文件獲取拼音信息?
  87. ?????*?@param?file?
  88. ?????*?@return?
  89. ?????*/??
  90. ????private?static?String?getPinYinFromWebpageFile(String?file)?{??
  91. ????????try?{??
  92. ??????????????
  93. ????????????char[]?buff?=?new?char[(int)?new?File(file).length()];??
  94. ??????????????
  95. ????????????FileReader?reader?=?new?FileReader(file);??
  96. ????????????reader.read(buff);??
  97. ????????????reader.close();??
  98. ??????????????
  99. ????????????String?content?=?new?String(buff);??
  100. ????????????//?spf("yi1")??
  101. ????????????Matcher?mat?=?Pattern.compile("(?<=spf\\(\")[a-z1-4]{0,100}",??
  102. ????????????????????Pattern.CASE_INSENSITIVE).matcher(content);??
  103. ????????????if?(mat.find())?{??
  104. ????????????????return?mat.group();??
  105. ????????????}??
  106. ????????????//<span?class="dicpy">cal</span>?spf("xin1")??
  107. ????????????mat?=?Pattern.compile("(?<=class=\"dicpy\">)[a-z1-4]{0,100}",??
  108. ????????????????????Pattern.CASE_INSENSITIVE).matcher(content);??
  109. ????????????if?(mat.find())?{??
  110. ????????????????return?mat.group();??
  111. ????????????}??
  112. ????????}?catch?(Exception?e)?{??
  113. ????????????e.printStackTrace();??
  114. ????????}??
  115. ??????????
  116. ????????return?"";??
  117. ??
  118. ????}??
  119. }??


DownloadThread.java

[java]?view plaincopy

  1. package?com.siqi.dict;??
  2. ??
  3. import?java.io.File;??
  4. import?java.io.FileWriter;??
  5. import?java.net.URLEncoder;??
  6. import?java.util.regex.Matcher;??
  7. import?java.util.regex.Pattern;??
  8. ??
  9. import?com.siqi.http.Httpclient;??
  10. ??
  11. /**?
  12. ?*?將漢字頁面從漢典網(wǎng)站下載下來,存儲到本地?
  13. ?*?http://www.zdic.net/search/?c=2?
  14. ?*?@author?siqi?
  15. ?*?
  16. ?*/??
  17. public?class?DownloadThread?extends?Thread{??
  18. ??????
  19. ????/**?
  20. ?????*?線程最大數(shù)目?
  21. ?????*/??
  22. ????public?static?int?THREAD_MAX?=?10;??
  23. ??????
  24. ????/**?
  25. ?????*?下載最大重復次數(shù)?
  26. ?????*/??
  27. ????public?static?int?RETRY_MAX?=?5;??
  28. ??????
  29. ????/**?
  30. ?????*?漢典網(wǎng)站搜索網(wǎng)址?
  31. ?????*/??
  32. ????public?static?String?SEARCH_URL?=?"http://www.zdic.net/search/?q=%s";??
  33. ??????
  34. ????/**?
  35. ?????*?當前線程數(shù)目?
  36. ?????*/??
  37. ????private?static?int?threadCnt?=?0;??
  38. ??????
  39. ????/**?
  40. ?????*?當前線程處理漢字的unicode編碼?
  41. ?????*/??
  42. ????private?int?unicode?=?0;??
  43. ??????
  44. ????/**?
  45. ?????*?如果PATH文件夾不存在,那么創(chuàng)建它?
  46. ?????*/??
  47. ????static{??
  48. ????????try?{??
  49. ????????????File?file?=?new?File(DictMain.SAVEPATH);??
  50. ????????????if?(!file.exists())?{??
  51. ????????????????file.mkdirs();??
  52. ????????????}??
  53. ????????}?catch?(Exception?e)?{??
  54. ??
  55. ????????}??
  56. ????}??
  57. ??????
  58. ????/**?
  59. ?????*?返回當前線程數(shù)量?
  60. ?????*?@param?i?修改當前線程數(shù)量?threadCnt?+=?i;?
  61. ?????*?@return?返回修改后線程數(shù)量?
  62. ?????*/??
  63. ????public?static?synchronized?int?threadCnt(int?i){??
  64. ????????threadCnt?+=?i;??
  65. ????????return?threadCnt;??
  66. ????}??
  67. ??????
  68. ????/**?
  69. ?????*?下載UNICODE編碼為unicode的漢字網(wǎng)頁?
  70. ?????*?@param?unicode?
  71. ?????*/??
  72. ????public?DownloadThread(int?unicode){??
  73. ????????//等待,直到當前線程數(shù)量小于THREAD_MAX??
  74. ????????while(threadCnt(0)>THREAD_MAX){??
  75. ????????????try?{??
  76. ????????????????Thread.sleep(500);??
  77. ????????????}?catch?(InterruptedException?e)?{??
  78. ????????????}??
  79. ????????}??
  80. ??????????
  81. ????????threadCnt(1);???//線程數(shù)量+1??
  82. ????????this.unicode?=?unicode;??
  83. ????}??
  84. ??
  85. ????@Override??
  86. ????public?void?run()?{??
  87. ????????long?t1?=?System.currentTimeMillis();?//?記錄時間??
  88. ??
  89. ????????String?filePath?=?String.format(DictMain.FILEPATH,?unicode);?//?文件名??
  90. ??
  91. ????????String?word?=?new?String(Character.toChars(unicode));?//?將unicode轉(zhuǎn)換為數(shù)字??
  92. ??
  93. ????????boolean?downloaded?=?false;??
  94. ????????int?retryCnt?=?0;?//?下載失敗重復次數(shù)??
  95. ????????while?(!downloaded?&&?retryCnt?<?RETRY_MAX)?{??
  96. ????????????try?{??
  97. ????????????????String?content?=?DownloadPage(word);??
  98. ????????????????SaveToFile(filePath,?content);??
  99. ????????????????downloaded?=?true;??
  100. ??
  101. ????????????????threadCnt(-1);??
  102. ????????????????System.out.println(String.format("%s,?%s,?下載成功!線程數(shù)目:%s?用時:%s",??
  103. ????????????????????????unicode,?word,?threadCnt(0),?System.currentTimeMillis()??
  104. ????????????????????????????????-?t1));??
  105. ????????????????return;??
  106. ????????????}?catch?(Exception?e)?{??
  107. ????????????????retryCnt++;??
  108. ????????????}??
  109. ????????}??
  110. ??
  111. ????????threadCnt(-1);??
  112. ????????System.err.println(String.format("%s,?%s,?下載失敗!線程數(shù)目:%s?用時:%s",?unicode,??
  113. ????????????????word,?threadCnt(0),?System.currentTimeMillis()?-?t1));??
  114. ????}??
  115. ??????
  116. ????/**?
  117. ?????*?在漢典網(wǎng)站上查找漢字,返回漢字字典頁面內(nèi)容?
  118. ?????*?@param?word?
  119. ?????*?@return?
  120. ?????*?@throws?Exception?
  121. ?????*/??
  122. ????public?String?DownloadPage(String?word)?throws?Exception{??
  123. ????????//查找word??
  124. ????????Httpclient?httpclient?=?new?Httpclient();??
  125. ????????String?url?=?String.format(SEARCH_URL,?URLEncoder.encode(word,?"UTF-8"));??
  126. ????????httpclient.processUrl(url,?Httpclient.METHOD_POST);??
  127. ??????????
  128. ????????//返回的是一個跳轉(zhuǎn)頁??
  129. ????????//獲取跳轉(zhuǎn)的鏈接??
  130. ????????Matcher?mat?=?Pattern.compile("(?<=HREF=\")[^\"]+").matcher(httpclient.getContent());??
  131. ????????if(mat.find()){??
  132. ????????????httpclient.processUrl(mat.group());??
  133. ????????}??
  134. ??????????
  135. ????????return?httpclient.getContent();??
  136. ????}??
  137. ??????
  138. ????/**?
  139. ?????*?將內(nèi)容content寫入file文件?
  140. ?????*?@param?file?
  141. ?????*?@param?content?
  142. ?????*/??
  143. ????public?void?SaveToFile(String?file,?String?content){??
  144. ????????try?{??
  145. ????????????FileWriter?fw?=?new?FileWriter(file);??
  146. ????????????fw.write(content);??
  147. ????????????fw.close();??
  148. ????????}?catch?(Exception?e)?{??
  149. ????????????e.printStackTrace();??
  150. ????????}??
  151. ????}??
  152. }??


PinYin.java

[java]?view plaincopy

  1. package?com.siqi.pinyin;??
  2. ??
  3. import?java.io.BufferedReader;??
  4. import?java.io.InputStreamReader;??
  5. import?java.util.HashMap;??
  6. import?java.util.Map;??
  7. ??
  8. public?class?PinYin?{??
  9. ??
  10. ????private?static?Map<Integer,?PinYinEle>?map?=?new?HashMap<Integer,?PinYinEle>();??
  11. ??
  12. ????/**?
  13. ?????*?載入pinyin數(shù)據(jù)文件?
  14. ?????*/??
  15. ????static?{??
  16. ????????try?{??
  17. ????????????BufferedReader?bReader?=?new?BufferedReader(new?InputStreamReader(??
  18. ????????????????????PinYin.class.getResourceAsStream("data.dat")));??
  19. ????????????String?aLine?=?null;??
  20. ????????????while?((aLine?=?bReader.readLine())?!=?null)?{??
  21. ????????????????PinYinEle?ele?=?new?PinYinEle(aLine);??
  22. ????????????????map.put(ele.getUnicode(),?ele);??
  23. ????????????}??
  24. ????????????bReader.close();??
  25. ????????}?catch?(Exception?e)?{??
  26. ????????????e.printStackTrace();??
  27. ????????}??
  28. ????}??
  29. ??
  30. ????/**?
  31. ?????*?去掉注釋可以測試一下?
  32. ?????*??
  33. ?????*?@param?args?
  34. ?????*/??
  35. ????public?static?void?main(String[]?args)?{??
  36. ????????System.out.println(" 包含聲調(diào):"?+?PinYin.getPinYin("大家haome12345"));??
  37. ????????System.out.println("不包含聲調(diào):"?+?PinYin.getPinYin("大家haome12345",?false));??
  38. ????}??
  39. ??
  40. ????/**?
  41. ?????*?獲取漢字字符串的拼音,containsNumber是否獲取拼音中的聲調(diào)1、2、3、4?
  42. ?????*??
  43. ?????*?@param?str?
  44. ?????*?@param?containsNumber?
  45. ?????*????????????true?=?包含聲調(diào),false?=?不包含聲調(diào)?
  46. ?????*?@return?
  47. ?????*/??
  48. ????public?static?String?getPinYin(String?str,?boolean?containsNumber)?{??
  49. ????????StringBuffer?sb?=?new?StringBuffer();??
  50. ????????for?(Character?ch?:?str.toCharArray())?{??
  51. ????????????sb.append(getPinYin(ch,?containsNumber));??
  52. ????????}??
  53. ??
  54. ????????return?sb.toString();??
  55. ????}??
  56. ??
  57. ????/**?
  58. ?????*?獲取字符串的拼音?
  59. ?????*??
  60. ?????*?@param?str?
  61. ?????*?@return?
  62. ?????*/??
  63. ????public?static?String?getPinYin(String?str)?{??
  64. ????????StringBuffer?sb?=?new?StringBuffer();??
  65. ????????for?(Character?ch?:?str.toCharArray())?{??
  66. ????????????sb.append(getPinYin(ch));??
  67. ????????}??
  68. ??
  69. ????????return?sb.toString();??
  70. ????}??
  71. ??
  72. ????/**?
  73. ?????*?獲取單個漢字的拼音,包含聲調(diào)?
  74. ?????*??
  75. ?????*?@param?ch?
  76. ?????*?@return?
  77. ?????*/??
  78. ????public?static?String?getPinYin(Character?ch)?{??
  79. ????????return?getPinYin(ch,?true);??
  80. ????}??
  81. ??
  82. ????/**?
  83. ?????*?獲取單個漢字的拼音?
  84. ?????*??
  85. ?????*?@param?ch?
  86. ?????*????????????漢字.?如果輸入非漢字,返回ch.?如果輸入null,返回空字符串;?
  87. ?????*?@param?containsNumber?
  88. ?????*????????????true?=?包含聲調(diào),false?=?不包含聲調(diào)?
  89. ?????*?@return?
  90. ?????*/??
  91. ????public?static?String?getPinYin(Character?ch,?boolean?containsNumber)?{??
  92. ????????if?(ch?!=?null)?{??
  93. ????????????int?code?=?ch.hashCode();??
  94. ????????????if?(map.containsKey(code))?{??
  95. ????????????????if?(containsNumber)?{??
  96. ????????????????????return?map.get(code).getPinyin();??
  97. ????????????????}?else?{??
  98. ????????????????????return?map.get(code).getPinyin().replaceAll("[0-9]",?"");??
  99. ????????????????}??
  100. ????????????}?else?{??
  101. ????????????????return?ch.toString();??
  102. ????????????}??
  103. ????????}??
  104. ????????return?"";??
  105. ????}??
  106. }??

PinYinEle.java

[java]?view plaincopy

  1. package?com.siqi.pinyin;??
  2. ??
  3. public?class?PinYinEle?{??
  4. ????private?int?unicode;??
  5. ????private?String?ch;??
  6. ????private?String?pinyin;??
  7. ??????
  8. ????public?PinYinEle(){}??
  9. ??????
  10. ????public?PinYinEle(String?str){??
  11. ????????if(str!=null){??
  12. ????????????String[]?strs?=?str.split(",");??
  13. ????????????if(strs.length?==?3){??
  14. ????????????????try{??
  15. ????????????????this.unicode?=?Integer.parseInt(strs[0]);??
  16. ????????????????}catch(Exception?e){??
  17. ??????????????????????
  18. ????????????????}??
  19. ????????????????this.ch?=?strs[1];??
  20. ????????????????this.pinyin?=?strs[2];??
  21. ????????????}??
  22. ????????}??
  23. ??????????
  24. ????}??
  25. ??????
  26. ????public?int?getUnicode()?{??
  27. ????????return?unicode;??
  28. ????}??
  29. ????public?void?setUnicode(int?unicode)?{??
  30. ????????this.unicode?=?unicode;??
  31. ????}??
  32. ????public?String?getCh()?{??
  33. ????????return?ch;??
  34. ????}??
  35. ????public?void?setCh(String?ch)?{??
  36. ????????this.ch?=?ch;??
  37. ????}??
  38. ????public?String?getPinyin()?{??
  39. ????????return?pinyin;??
  40. ????}??
  41. ????public?void?setPinyin(String?pinyin)?{??
  42. ????????this.pinyin?=?pinyin;??
  43. ????}??
  44. ??????
  45. ??????
  46. }??


生成的data.dat里面內(nèi)容(部分)為:

[java]?view plaincopy

  1. 19968,一,yi1??
  2. 19969,丁,ding1??
  3. 19970,丂,kao3??
  4. 19971,七,qi1??
  5. 19972,丄,shang4??
  6. 19973,丅,xia4??
  7. 19974,丆,han3??
  8. 19975,萬,wan4??
  9. 19976,丈,zhang4??
  10. 19977,三,san1??
  11. 19978,上,shang4??
  12. 19979,下,xia4??
  13. 19980,丌,qi2??
  14. 19981,不,bu4??

運行DictMain.java結(jié)果

執(zhí)行時間可能會有幾十分鐘到幾小時不等,總共會下載200+M的網(wǎng)頁(20000+個網(wǎng)頁),每次運行都會先判斷以前下載過沒有,所以結(jié)束掉程序不會有影響

顯示All prepared!表示已經(jīng)準備好了,刷新項目文件夾,可以看到網(wǎng)頁保持在dict/pages下面,不建議在elipse中打開那個文件夾,因為里面有2萬多個文件,會卡死eclipse,

還可以看到生成了data.txt文件,改為data.dat并復制到pinyin文件夾下面

運行PinYin.java

可以看到"大家haome12345"的拼音:

[java]?view plaincopy

  1. 包含聲調(diào):da4jia1haome12345??
  2. 包含聲調(diào):dajiahaome12345??

上面只是顯示了如何獲取拼音,獲取筆畫等的方法類似,在這里就不演示了。

總結(jié)

以上是生活随笔為你收集整理的java实现汉字字典的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

91人人人| 最近日韩免费视频 | 在线观看91久久久久久 | 丁香五香天综合情 | 国产精品久久久久影院日本 | 欧美成人va | 天天激情站 | 久久有精品 | 福利视频导航网址 | 精品国产亚洲一区二区麻豆 | 中文字幕中文字幕在线一区 | 国产一区二区手机在线观看 | 偷拍福利视频一区二区三区 | 日韩剧| 四虎国产精品免费观看视频优播 | 日韩美女高潮 | 国产福利精品一区二区 | 免费在线观看中文字幕 | 国产免费高清 | 久久久精品小视频 | 色橹橹欧美在线观看视频高清 | 亚洲欧美乱综合图片区小说区 | 亚洲资源视频 | 国产69精品久久久久久 | 国产午夜精品一区二区三区在线观看 | 国产黄免费在线观看 | 在线黄av | 日韩精品一区二区在线观看视频 | 伊人午夜| 午夜国产一区二区三区四区 | 人人澡人人爱 | 亚洲精品综合欧美二区变态 | 天天操夜夜干 | 麻豆国产电影 | 国产91影院 | 日韩欧美一区二区不卡 | 91一区二区三区在线观看 | 欧美日韩一区久久 | 中文字幕日韩一区二区三区不卡 | 四虎成人精品在永久免费 | 狠狠干狠狠久久 | 在线视频观看成人 | 久久精视频 | 久久综合九色 | 国内精品久久久久影院优 | 青青河边草免费直播 | 不卡国产视频 | 国产精品一区二区久久国产 | 99久久精品免费看国产免费软件 | 国产视频1 | 二区三区在线观看 | a级国产乱理论片在线观看 伊人宗合网 | 91麻豆看国产在线紧急地址 | 亚洲乱码精品 | 国产超碰97 | 亚洲天堂毛片 | 一区二区三区免费在线观看视频 | 精品久久久999 | 又黄又爽又湿又无遮挡的在线视频 | 国产精品久久一卡二卡 | 国产激情小视频在线观看 | 97视频在线观看成人 | 日韩一级片观看 | 日韩一区二区三区在线看 | 久久麻豆精品 | 国产美女视频免费观看的网站 | 亚洲国产精品500在线观看 | 性色视频在线 | 精品国产一区二区三区久久久久久 | 91大神电影 | 美女网站色免费 | 免费一级特黄录像 | 粉嫩高清一区二区三区 | 人人澡视频 | 久草视频在线看 | 日日天天| 亚洲一二视频 | 在线成人高清电影 | 日韩最新中文字幕 | 成年人免费av网站 | 亚洲成人av一区 | 九九色视频 | 97超碰免费在线观看 | 天天干人人干 | 天天射天天舔天天干 | 狠狠操狠狠插 | 中文一区在线观看 | 视频在线观看日韩 | 狠狠操电影网 | 超碰人人91 | 国色天香在线 | 国产精品99久久久久人中文网介绍 | 国产成人精品一区二区三区福利 | 久久久精品网站 | 成人一区二区三区在线 | 日批视频 | 在线观看完整版免费 | 在线一二三区 | 精品视频国产一区 | 91最新视频 | 久草精品视频在线播放 | 99热手机在线 | 天天色天天操天天爽 | 国产人成一区二区三区影院 | 久久成人综合视频 | 狠狠色狠狠色合久久伊人 | 国产尤物一区二区三区 | 六月激情网| 日本中文字幕在线免费观看 | 欧美性生活久久 | 欧美精品久久久久久久 | 欧洲一区二区三区精品 | 精品国产一区二区三区噜噜噜 | 天天玩天天操天天射 | 精品国产欧美一区二区 | 午夜精品久久久久久久久久久 | 欧美性生活一级片 | 婷婷色av| 久一网站| 视频在线91 | 免费国产在线观看 | 91精品电影 | 又污又黄的网站 | 99久久精品国产亚洲 | 久久久www成人免费毛片麻豆 | 人人揉人人揉人人揉人人揉97 | www日韩欧美 | 国产中文字幕在线看 | 日韩中文字幕91 | 狠狠色噜噜狠狠 | 人人玩人人添人人澡超碰 | 五月天久久 | 国产精成人品免费观看 | 久久久久久久国产精品视频 | 伊人狠狠 | 国产精品一区二区三区视频免费 | 日韩免费成人 | 黄色精品一区 | 免费观看性生活大片 | 欧洲精品码一区二区三区免费看 | 成人久久电影 | 亚洲 欧美 国产 va在线影院 | 久久五月婷婷丁香社区 | 色 免费观看 | 五月婷婷六月丁香在线观看 | 东方av免费在线观看 | 五月婷婷综合色拍 | 亚洲伊人成综合网 | 亚洲精品欧美成人 | 国产精品久久二区 | 久久超级碰视频 | 93久久精品日日躁夜夜躁欧美 | 久久综合加勒比 | 久久人人97超碰精品888 | 91精品国产综合久久婷婷香蕉 | 日韩色在线 | 国产 精品 资源 | 成年人黄色大全 | 免费黄色av电影 | 国产精品一区二区在线播放 | 久久黄页 | 亚洲成av人影院 | 99视频在线观看视频 | 日韩a在线看 | 欧美日韩久久不卡 | 色婷婷欧美| 色偷偷97| 久久福利影视 | 久久精品—区二区三区 | 日韩亚洲在线 | 在线精品视频免费播放 | 久久成人在线视频 | 91在线网址| 综合天天色 | 青草视频在线播放 | 97人人看| 日韩精品久久一区二区 | 91av在线精品 | 欧美一级片免费在线观看 | 日韩欧美视频 | 在线观看久久 | 一区二区三区高清 | 亚洲精品永久免费视频 | 在线观看av黄色 | 婷婷在线色 | av成人免费观看 | 天天夜夜亚洲 | 国产视频中文字幕在线观看 | 亚洲欧美在线观看视频 | 天天干天天干天天干 | 欧美日韩在线观看不卡 | 成人av影院在线观看 | 日本激情视频中文字幕 | 久久视频精品在线 | 国产群p | 在线国产一区二区 | 亚洲免费激情 | 色综合久久网 | 国产伦精品一区二区三区四区视频 | 91热| 97超级碰碰碰视频在线观看 | 亚洲精品国产成人av在线 | 久久综合狠狠综合久久狠狠色综合 | 伊人手机在线 | 337p日本大胆噜噜噜噜 | 日韩精选在线观看 | 日韩免费电影一区二区 | 婷婷色av | 亚洲免费在线观看视频 | 在线观看不卡的av | 亚洲人久久 | 日本久久综合网 | 久久国产品 | 美女av免费看 | 成人a免费 | av直接看| 日韩色区 | 日本中文字幕在线一区 | 99色免费| 粉嫩高清一区二区三区 | japanesexxxhd奶水| 蜜臀久久99精品久久久久久网站 | 天天干,狠狠干 | 精品高清美女精品国产区 | 欧美a在线免费观看 | av色网站 | 97爱爱爱 | 中文字幕免费播放 | 亚洲精品国精品久久99热一 | 久久免费福利 | 91精品区 | 日韩精品欧美一区 | 天天天天色射综合 | 亚洲成aⅴ人片久久青草影院 | 国产99久久99热这里精品5 | 四虎免费在线观看 | 91资源在线视频 | 国产日韩一区在线 | 日本中文字幕一二区观 | 亚洲女欲精品久久久久久久18 | 欧美日韩在线视频观看 | 精品国产一区二区三区在线 | 久久久精品亚洲 | 成人午夜网 | 夜夜操天天摸 | 久久久国产一区二区三区四区小说 | 亚洲电影影音先锋 | 成人国产精品一区 | 精品国产一区二区三区男人吃奶 | 国产成人精品一区二区三区免费 | 久久精品人人做人人综合老师 | 91在线小视频 | 国产黄色视 | 日韩精品在线播放 | 亚洲一区二区三区四区在线视频 | 91高清免费看 | 欧美一级大片在线观看 | 99国产一区二区三精品乱码 | 丁香婷婷色综合亚洲电影 | 91亚洲精品久久久蜜桃 | 97视频播放 | 欧美一级性视频 | 久草av在线播放 | 久久人人精品 | 成人免费中文字幕 | 免费情趣视频 | 精品伊人久久久 | 亚洲最快最全在线视频 | 亚洲日本在线视频观看 | 一区二区激情 | 欧美 激情 国产 91 在线 | 国产精品麻豆视频 | 国产精选视频 | 亚洲v精品| 欧美精品国产综合久久 | 蜜臀精品久久久久久蜜臀 | 最新国产精品亚洲 | 国产一区二区精品久久 | 天天操天天爱天天干 | 亚洲精品视频免费观看 | 国产精品久久久久久久久久久久午 | 色一级片 | 久久韩国免费视频 | 中文字幕在线免费播放 | 天天操比| 91在线播放综合 | 国产精品爽爽爽 | 91精品啪 | 国产精品99久久久久久大便 | 91精品国产九九九久久久亚洲 | 在线97| 国产成人久久精品77777 | 99产精品成人啪免费网站 | 青青视频一区 | 丁香午夜 | 日韩有码在线观看视频 | 日本狠狠色 | 808电影| 99se视频在线观看 | 在线观看黄网站 | 国产主播大尺度精品福利免费 | 久日精品 | 精品主播网红福利资源观看 | 在线成人小视频 | 国产视频日韩视频欧美视频 | 91豆花在线| 91在线视频精品 | 色综合久久中文综合久久牛 | 久久r精品 | 97av影院 | 99国产精品久久久久久久久久 | 国产码电影| 免费观看一区二区三区视频 | 伊人五月天婷婷 | 天天激情综合 | 伊人色**天天综合婷婷 | 久久久久久久影院 | 狠狠天天 | 最近中文字幕完整视频高清1 | 久久久国产影院 | 尤物97国产精品久久精品国产 | 国产亚洲精品美女久久 | 久久久久久免费 | 人人狠狠综合久久亚洲 | 天天射天天干天天插 | 一级片视频免费观看 | 午夜av一区 | 国产黄视频在线观看 | 日本精品va在线观看 | 国产一级二级在线 | 日韩在线高清视频 | 91免费在线视频 | www.黄色小说.com | 日韩精品在线观看av | 欧美男男tv网站 | 激情伊人五月天 | 久久精品久久99精品久久 | 美女福利视频在线 | 91精品网站在线观看 | 久久久久国产精品免费免费搜索 | 欧美国产不卡 | 精品黄色片| 免费看黄色小说的网站 | 精品视频成人 | 视频在线日韩 | 激情五月婷婷丁香 | 精品一区二区免费视频 | 午夜视频在线观看网站 | 色全色在线资源网 | 国产精品日韩高清 | 午夜视频免费在线观看 | 国产精品欧美日韩 | 91久久电影 | 日操操 | 国产精品久久久久久久久蜜臀 | 久久情网 | 国产精品欧美在线 | 国产青草视频在线观看 | 国产精品乱码久久久久久1区2区 | 九九激情视频 | 成人动漫一区二区三区 | 国产精品久久久久久五月尺 | 日韩有码中文字幕在线 | 亚洲精品色 | 射射射av | 人人藻人人澡人人爽 | 少妇做爰k8经典 | 日日射av| 婷婷丁香在线视频 | 91九色丨porny丨丰满6 | 欧美日韩精品久久久 | 日韩午夜在线观看 | a电影在线观看 | 国产免费又粗又猛又爽 | 国产精品观看视频 | 五月av在线 | 国产在线97 | 精品一区二区三区电影 | 精品视频中文字幕 | 色噜噜在线观看视频 | 亚洲最大成人免费网站 | 天天做日日爱夜夜爽 | 叶爱av在线 | 亚洲 欧美 综合 在线 精品 | 国产精品 日韩精品 | 午夜在线日韩 | 亚州av一区| 成人久久久电影 | 国产高清在线 | 欧美精品免费视频 | 久久久免费精品视频 | 日韩精品字幕 | 国产精品久久伊人 | 99精品视频免费观看视频 | 人人干天天射 | 国产欧美日韩视频 | 美腿丝袜一区二区三区 | 性色av一区二区三区在线观看 | 日韩高清不卡在线 | 在线观看岛国av | 欧美另类调教 | 中文字幕在线视频精品 | 亚洲人在线视频 | 成人免费观看视频网站 | 久久久 激情 | 伊人宗合网| 91九色视频观看 | 91高清在线看| 午夜精品久久久久久久99 | 激情av综合| 亚洲 欧洲av | 国产中文字幕国产 | 久久精品国产免费观看 | 性色av免费在线观看 | 免费亚洲黄色 | 欧美日韩在线电影 | 成年一级片 | 国产精品一区二区在线 | 伊人网av| 免费看国产a | 四虎影视成人永久免费观看亚洲欧美 | 成人黄大片视频在线观看 | 九九热视频在线免费观看 | 在线国产黄色 | 91精品久久久久久久久 | 国产人成在线视频 | 亚洲精品在线国产 | 操操操日日 | av在线最新| 国产在线成人 | 日本三级全黄少妇三2023 | 亚洲美女视频网 | 国产网站av| 女人18片| 天天色成人网 | 日本中文字幕在线电影 | 狠狠色狠狠色综合日日92 | 亚洲美女精品 | 一区三区在线欧 | 欧美巨大 | 欧美一二在线 | 精品国产伦一区二区三区 | www.狠狠插.com| 最新日本中文字幕 | 超碰97在线人人 | www操操操| 国产亚洲高清视频 | 视频一区二区在线观看 | av在线免费网 | 99在线视频精品 | 日本爱爱免费视频 | 国产又粗又长又硬免费视频 | 中文字幕婷婷 | 国产91av视频在线观看 | 三级黄色片子 | 在线观看免费国产小视频 | 久久 一区 | www.天天干 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 免费国产在线精品 | 91丨九色丨蝌蚪丨老版 | 99久久精品久久久久久清纯 | 91视频久久久久久 | 97国产精品亚洲精品 | 亚洲精品美女视频 | 久久再线视频 | 欧美色就是色 | www.五月婷婷.com | 国产精品一区二区精品视频免费看 | 日本中文字幕一二区观 | 国产福利91精品张津瑜 | 青青视频一区 | 色综合久久综合中文综合网 | 中文字幕在线观看播放 | 欧美一区二区在线免费看 | 国产又粗又硬又爽的视频 | 天天综合网久久综合网 | 久久久wwww| 91亚洲狠狠婷婷综合久久久 | 99久久精品国| 中文字幕二区三区 | 国内精品视频一区二区三区八戒 | 91精品在线麻豆 | 久精品视频 | 亚洲色图色 | 国产精品一区二区三区视频免费 | 免费观看不卡av | 欧美一二三区在线观看 | 国产色资源 | 国产青春久久久国产毛片 | 国产三级视频在线 | 国产精品午夜久久 | 91丨九色丨蝌蚪丨对白 | 国产精品观看 | 毛片视频网址 | 日韩av高潮 | 欧美久久久久久久久久久 | 特黄色大片 | 69视频在线播放 | 亚洲精品99久久久久中文字幕 | 91精品综合在线观看 | 狠狠色丁香婷婷综合 | 久久久久久国产精品 | 99精品久久精品一区二区 | 国产91精品在线播放 | 成人网在线免费视频 | 少妇bbb搡bbbb搡bbbb′ | 亚洲精品高清视频在线观看 | 国产视频一区在线 | 日本三级在线观看中文字 | 天天av在线播放 | 99久久久久久久久 | 久久国产麻豆 | 久久精品一区二区三区四区 | 亚洲一级电影在线观看 | 美女视频黄免费的久久 | 欧美一级电影片 | 网站在线观看你们懂的 | 免费中午字幕无吗 | 探花视频免费观看 | 欧美一级日韩三级 | 久久国产露脸精品国产 | 天天操比 | 国产亚洲精品日韩在线tv黄 | 天天天干 | 亚洲女人天堂成人av在线 | 亚洲二区精品 | 免费观看丰满少妇做爰 | 91久久久久久国产精品 | 亚洲精品字幕在线观看 | 国产专区日韩专区 | 国产亚洲一级高清 | 日韩动态视频 | 国产一区二区三区网站 | 在线观看av网 | 久久综合综合久久综合 | 免费a视频 | 午夜av网站 | 成人黄色大片在线免费观看 | 91av色| 在线免费视频 你懂得 | 在线观看成人 | 精品国产伦一区二区三区观看说明 | 日韩免费看片 | 国内少妇自拍视频一区 | 黄污视频大全 | 日韩av中文 | 天天射,天天干 | 亚洲成年人在线播放 | 欧美成年黄网站色视频 | 最近久乱中文字幕 | 久久怡红院 | 久久婷婷影视 | 中文字幕欧美日韩va免费视频 | 毛片一区二区 | 区一区二区三在线观看 | 一级a性色生活片久久毛片波多野 | 中文字幕人成乱码在线观看 | 久久综合久色欧美综合狠狠 | 天天干人人 | 国产精品一区二区在线免费观看 | 免费av观看 | 日韩理论电影在线观看 | 国产二区av | 免费a v在线 | 在线视频日韩精品 | 日日精品 | 丁香久久婷婷 | 97激情影院| 成人性生活大片 | 超碰97在线看 | 日日精品| 国产一区观看 | 91精品国产三级a在线观看 | 香蕉视频网址 | 亚洲精品高清在线观看 | 婷婷成人综合 | 久久精品久久99 | 在线观看黄色的网站 | 91精品免费看 | 国产伦精品一区二区三区高清 | 国产精品麻| 天天操夜夜摸 | 亚洲国产中文字幕 | 国产高清视频色在线www | 在线视频精品播放 | 精品不卡视频 | 久久一区精品 | 久久97久久97精品免视看 | 国产亚洲视频在线观看 | 国产亚洲精品久久19p | 国产亚洲精品久久19p | 亚洲乱码国产乱码精品天美传媒 | 国内精品视频一区二区三区八戒 | 久久久久国产一区二区 | 久久久久久久久久免费 | a成人v在线 | 天天插视频 | 一区中文字幕在线观看 | 亚洲成人av片在线观看 | 日本在线视频一区二区三区 | 日韩视频免费观看高清 | 在线观看岛国 | 操操操com| 91人人揉日日捏人人看 | a午夜电影| 九色自拍视频 | 五月天天在线 | 国产福利一区二区三区在线观看 | 国产高清不卡一区二区三区 | 日韩精品中文字幕一区二区 | 亚洲国产免费av | 久久国产电影 | 人人看人人爱 | av一级片网站 | 成人中文字幕+乱码+中文字幕 | 中文字幕超清在线免费 | 免费观看一级特黄欧美大片 | 精品国产乱码久久久久久久 | 91资源在线免费观看 | 88av网站 | 国产你懂的在线 | 特级a毛片| 超薄丝袜一二三区 | 97视频资源| 国产一区二区在线免费观看 | 精品999国产 | 日本丶国产丶欧美色综合 | 国产成人精品久久亚洲高清不卡 | 在线免费高清一区二区三区 | 免费在线观看av的网站 | 西西444www大胆无视频 | 久草在线免费看视频 | 极品久久久 | www.eeuss影院av撸 | 国偷自产视频一区二区久 | 国产午夜在线观看视频 | 黄色av一区 | 久久国产网站 | 亚洲 成人 欧美 | 国产精品永久免费在线 | 69中文字幕 | 日韩videos高潮hd | 国产精品一级在线 | 一区二区三区在线电影 | 又黄又爽又色无遮挡免费 | av超碰在线 | 精品视频成人 | 日韩免费观看视频 | 美女网站在线观看 | 香蕉一区| 97香蕉久久超级碰碰高清版 | 日韩精品视频免费专区在线播放 | 成人在线观看日韩 | 日韩字幕在线 | 欧美乱码精品一区 | 欧美日韩性视频在线 | 最新色站 | 成人av资源网 | 国产精品美女www爽爽爽视频 | 国产精品毛片一区二区在线 | 久久天天操 | 色综合久久66 | 中文字幕一区二区三区乱码在线 | 九色91在线视频 | 欧美视频国产视频 | 精品国产人成亚洲区 | 久久专区 | 亚洲黄在线观看 | 天天综合网~永久入口 | 欧美一级视频在线观看 | 激情网综合 | 国产福利不卡视频 | 国产一二三区在线观看 | 久久国产美女视频 | 国产伦理一区二区 | 综合国产在线 | 成人久久国产 | 精品日韩在线一区 | 欧美日韩国产成人 | 日本在线h| 天天干夜夜干 | 天天色天天操综合 | 久艹视频在线免费观看 | 天天操天天摸天天爽 | 久久国产精品成人免费浪潮 | 五月天亚洲综合小说网 | 成在线播放 | 精品 一区 在线 | 国产亚洲精品久久久久久无几年桃 | 日韩高清在线一区二区 | 成人在线视频论坛 | 亚洲第一伊人 | 天堂网av 在线 | 偷拍精品一区二区三区 | 国产在线视频不卡 | 国产精品一区二区三区久久久 | 福利网在线 | 久久久久久久免费观看 | 国产亚洲资源 | av在线一二三区 | 精品a级片| 综合网欧美 | 亚洲免费av一区二区 | 免费日韩高清 | 亚洲资源在线 | 精品国产一区二区三区久久久久久 | 成人av免费播放 | 国产1区2| 色姑娘综合天天 | 一区二区三区在线免费观看视频 | 亚州精品天堂中文字幕 | 日韩精品在线免费播放 | 精品久久福利 | 97人人精品| 少妇性aaaaaaaaa视频 | 91av福利视频 | 97免费在线观看 | 亚洲欧美日韩不卡 | 狠狠色综合欧美激情 | 这里只有精品视频在线观看 | 91在线视频在线观看 | 欧美日韩精品免费观看 | 久久国产热 | 日韩二三区| 成人小视频在线观看免费 | av资源中文字幕 | 久久99热这里只有精品 | 日本电影久久 | 国产黄色片久久 | 在线中文字幕av观看 | 97精品国自产拍在线观看 | 国产91精品在线播放 | 91精品老司机久久一区啪 | www.黄色在线 | 欧美男同视频网站 | 成人国产精品久久久久久亚洲 | 青青五月天 | 99爱国产精品 | 国产手机免费视频 | 久久精品一区二区 | 波多野结衣视频一区二区三区 | 久久午夜视频 | 国产美腿白丝袜足在线av | 久久中文字幕视频 | 日韩色在线 | 久久久久久久影视 | 国产欧美精品一区二区三区 | 日韩视频1区 | 人人插人人看 | 日日噜噜噜噜夜夜爽亚洲精品 | 免费视频a | 超碰资源在线 | 国产精品青草综合久久久久99 | 亚洲天堂色婷婷 | 啪啪精品| 在线 视频 亚洲 | 在线观看精品国产 | 亚洲综合在线五月 | 欧美a在线看 | 日本激情视频中文字幕 | 中文字幕视频一区二区 | www.狠狠插.com | 亚洲国产美女久久久久 | 操久久免费视频 | 最新久久久 | 色伊人网| 亚洲黄色免费观看 | 亚洲女同videos | 国产成人精品一区二区在线 | 狠狠干网址 | 日产中文字幕 | 99久久国产免费,99久久国产免费大片 | 国产无遮挡又黄又爽在线观看 | 国产一区二区三区久久久 | 日韩在线电影一区二区 | 久久久国产一区二区三区四区小说 | 久久国产手机看片 | 狠狠色噜噜狠狠狠合久 | 伊人资源站 | 丝袜+亚洲+另类+欧美+变态 | 91久久在线观看 | 欧美日一级片 | 国产在线日本 | 亚洲国产精品资源 | 精品日韩在线一区 | 男女靠逼app | 亚洲91av| 亚洲国产中文在线观看 | 国产精品va | 久久久久久久久久久综合 | 97操操操 | 天天艹天天爽 | 8x成人在线| 香蕉久草在线 | 在线观看电影av | 欧美精品久久久久久久免费 | 玖玖精品在线 | 国产麻豆精品传媒av国产下载 | 久久国产精品久久久 | 日本69hd | 国产精品 中文字幕 亚洲 欧美 | a级成人毛片 | 97视频免费在线观看 | 日韩欧美在线一区二区 | av在线超碰 | 国产黄色精品 | 一级国产视频 | 91在线蜜桃臀 | 久久成人免费 | 日韩91在线 | 中文字幕在线观看资源 | 中文字幕第一页在线 | 久99热| 久草在线免费看视频 | 欧美精品一区在线发布 | 免费看黄色小说的网站 | 色妞色视频一区二区三区四区 | 欧美精品被 | 亚洲精品视频网址 | 国产精品一区二区久久精品爱微奶 | 最新日韩在线 | 少妇av片| 午夜av大片 | 色 中文字幕| 99热国产在线中文 | 亚洲国产日韩一区 | 亚洲va天堂va欧美ⅴa在线 | 女人高潮特级毛片 | 久久在线视频精品 | 丁香六月欧美 | 亚洲精品福利在线观看 | 国产最新精品视频 | 国产精品入口麻豆www | 国产精品久久久久久久久蜜臀 | 亚洲欧洲精品一区二区精品久久久 | 毛片网站在线 | 欧美激情va永久在线播放 | 久草视频免费在线观看 | 日韩激情在线视频 | 色视频在线观看免费 | 国产精品免费视频网站 | 天天操操| 2022久久国产露脸精品国产 | 日韩av网站在线播放 | 中文字幕精品三级久久久 | 中文字幕在线观看91 | 成人毛片网 | 婷婷深爱 | 五月婷婷综| 久久视频免费在线 | 99视频在线精品免费观看2 | 日本在线观看一区二区三区 | 99视频国产精品 | 五月婷香| 99精品视频在线 | 开心综合网 | 99精品视频在线看 | 欧美激情综合五月色丁香小说 | 久久久污 | 偷拍精偷拍精品欧洲亚洲网站 | 操操操com| 五月天婷婷在线观看视频 | 日日日操操 | 日韩天天干 | 国产小视频在线观看 | 亚洲成人蜜桃 | 亚洲综合国产精品 | 久久国产精品99久久久久久丝袜 | 日韩在线观看三区 | 成人免费网站视频 | 亚洲少妇自拍 | 色婷婷综合视频在线观看 | 国产精品久久久久久久毛片 | 亚洲一级电影在线观看 | 一区二区三区日韩在线 | 国产一二三精品 | 久久午夜色播影院免费高清 | 久久99久久99精品中文字幕 | 国产精品免费一区二区三区在线观看 | 国产精品一区二区久久精品 | 日韩精品亚洲专区在线观看 | 亚洲国产中文字幕在线 | 亚洲精品免费在线视频 | 亚洲视频国产 | 91精品视频网站 | 国产成人亚洲在线观看 | 黄污污网站 | 国内成人综合 | 五月天婷婷丁香花 | 日本99精品| 天天色影院 | 久章草在线 | 亚洲国产成人精品在线 | 91传媒在线观看 | 久久久久国产成人精品亚洲午夜 | 亚洲国产精品va在线看黑人 | 一区二区激情 | 中文字幕av在线播放 | 亚洲另类视频 | 国产黄色理论片 | 成人黄色片免费 | 97碰碰精品嫩模在线播放 | av丝袜天堂 | 久久精品这里都是精品 | 成人午夜精品久久久久久久3d | 国产精品自在线拍国产 | 国产一区二区视频在线 | 天天天在线综合网 | 91av在线视频播放 | 婷婷综合 | 中文字幕黄色 | 草久久久久 | 97av色| 国产在线不卡 | 日韩精品中字 | 国产精品一区欧美 | 久热免费在线 | 97人人爽 | 97超碰人人 | 四虎成人精品永久免费av | 精品久久久久久亚洲 | 涩涩伊人| 精品欧美一区二区精品久久 | 日韩视频免费观看高清完整版在线 | 91福利视频免费 | 国产青春久久久国产毛片 | 欧美日韩中文国产一区发布 | a资源在线 | 午夜久久福利影院 | 亚洲成av片人久久久 | 五月开心婷婷 | 黄色网www | 日韩在线观看三区 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 永久免费观看视频 | 五月激情片 | 色综合天天狠狠 | 一区二区三区精品在线视频 | www.啪啪.com| 国产高清av免费在线观看 | 九九九热精品免费视频观看 | 午夜精品福利一区二区三区蜜桃 | 免费看三级 | 色婷婷狠狠五月综合天色拍 | 91精品一区二区三区久久久久久 | 国产成人区 | 干综合网| 三上悠亚一区二区在线观看 | 成年人在线观看视频免费 | 久久久久久毛片精品免费不卡 | 一区二区av | 99精品免费久久久久久久久日本 | 91av免费观看 | 五月婷婷综合在线 | 亚洲一级免费电影 | 国产一区免费 | 超碰成人免费电影 | 日日夜夜天天射 | 草久久久| 久久久久久片 | 日本视频久久久 | 欧美在线不卡一区 | 一级片视频在线 | a色视频| 在线免费观看一区二区三区 | 在线探花 | 日日爽天天 | 精品99免费 | 四虎最新域名 | 欧美一区二区在线刺激视频 | 亚洲精品国产精品乱码不99热 | 免费在线一区二区三区 | 在线观看视频你懂得 | 天堂av免费在线 | 久久精品久久综合 | 99视频免费播放 | 久久精品成人热国产成 | 97香蕉超级碰碰久久免费软件 | 9在线观看免费 | 91免费视频网站在线观看 | 国产亚洲精品福利 | av免费观看高清 | 国产18精品乱码免费看 | 91精品毛片| 国产一区在线免费观看 | 最近中文字幕mv免费高清在线 | 久久久久久高清 | 久草综合在线 | 久久午夜精品影院一区 | 在线观看你懂的网址 | 97国产人人 | 国产精品久久久久久久久毛片 | 日韩久久精品一区二区三区 | 欧美在线观看禁18 | 久久er99热精品一区二区三区 | 尤物九九久久国产精品的分类 | 黄色免费高清视频 |