读取StarDict里的字典文件

搜集了些资料,并重新整理了源代码

 

1. 下载stardict字典文件, 以“langdao-ec-gb dictionary(en - zh_CN) 朗道英汉字典”为例

 

http://prdownloads.sourceforge.net/stardict/stardict-langdao-ec-gb-2.4.2.tar.bz2?download

 

2. 将附件的两个jar包加入到build path中

 

3. 将附件的config.properties放在你的项目根目录下, 并配置字典路径和字典文件名。如下:

 

dictPath=./stardict-langdao-ec-gb-2.4.2
dictName=langdao-ec-gb

 

4. 使用。 看代码:

 

package com.msino.dict.test;

import com.msino.dict.StarDictReader;
import com.msino.dict.manager.DictsManager;
import com.msino.dict.service.IDictsManager;
import com.msino.dict.service.core.Word;
import java.io.FileNotFoundException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 * Test case of class <code>StarDictReader</code>
 * @author XuDong.Su
 * @version 1.0,  Apr 5, 2009
 * @see com.msino.dict.StarDictReader
 */
public class StarDictReaderTest {
    private StarDictReader instance;
    private IDictsManager dictsManager = new DictsManager();

    private String dictsProp = dictsManager.getDictProps();

    String dictFileDir = "";
    String dictName = "";
	
    /**
     * Default constructor.
     */
    public StarDictReaderTest() {
    	
    	dictFileDir = dictsProp.substring(0, dictsProp.indexOf("||"));
    	dictName = dictsProp.substring(dictsProp.indexOf("||") + 2, dictsProp.length());
    	
    	System.out.println("dictFileDir : " + dictFileDir);
	System.out.println("dictName : " + dictName);
		
		
        try {
            instance =  new StarDictReader(dictFileDir, dictName);
        } catch (FileNotFoundException ex) {
            Logger.getLogger(StarDictReaderTest.class.getName()).
                    log(Level.SEVERE, null, ex);
        }
    }
    
    public static void main(String[] args) throws InterruptedException {
    	StarDictReaderTest test = new StarDictReaderTest();
    	test.lookup();
    }

    /**
     * Test of lookup method, of class DictEngine.
     * @throws java.lang.InterruptedException Thread.sleep(long)
     */
    public void lookup() throws InterruptedException {
        System.out.println("lookup");

        String word = "A Programming Language on the 360";
        String word2 = "crystal";
        String word3 = "trailer";
        String word4 = "not exsits";

        try {
            Word result = instance.lookup(word);
            System.out.println(result.self + ": " + result.definition);

            Thread.sleep(1000);

            long start = System.currentTimeMillis();

            System.out.println("Time: " + (start) + "ms");
            result = instance.lookup(word2);
            System.out.println(result.self + ": " + result.definition);

            long end1 = System.currentTimeMillis();
            System.out.println("Time: " + (end1) + "ms");
            System.out.println("Space Time: " + (end1 - start) + "ms");

            result = instance.lookup(word3);
            System.out.println(result.self + ": " + result.definition);
            
            long end2 = System.currentTimeMillis();
            System.out.println("Time: " + (end2 - end1) + "ms");
            
            result = instance.lookup(word4);
            System.out.println(result.self + ": " + result.definition);
            
            long end3 = System.currentTimeMillis();
            System.out.println("Time: " + (end3 - end2) + "ms");
            
        } catch (Exception ex) {
        	System.out.println(ex.getMessage());
            //Logger.getLogger(StarDictReaderTest.class.getName()).log(Level.INFO, ex.getMessage());
        }
    }

}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值