`

读取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());
        }
    }

}

 

 

 

1
1
分享到:
评论
6 楼 msino 2009-04-09  
halk 写道

msino 写道halk 写道msino 写道halk 写道两个分别由什么作用?stardict_tools.jar 用来读取gzip格式的字典文件, 由传入的单词返回翻译结果knopflerfish-osgi.jar看这里 http://www.knopflerfish.org/download.html还是想看你stardict_tools.jar 包里的代码,那才是精华..哈哈,反编译哈哈,试过了 全是自己写的?见GoogleCode有相关的工程,但是是C的


No,no
CSDN上下的,不过原代码有点问题,HardCode了文件路径,我重写了那个方法,顺便整理了下代码


5 楼 halk 2009-04-08  
msino 写道

halk 写道
msino 写道
halk 写道两个分别由什么作用?stardict_tools.jar 用来读取gzip格式的字典文件, 由传入的单词返回翻译结果knopflerfish-osgi.jar看这里 http://www.knopflerfish.org/download.html还是想看你stardict_tools.jar 包里的代码,那才是精华..


哈哈,反编译

哈哈,试过了
全是自己写的?
见GoogleCode有相关的工程,但是是C的
4 楼 msino 2009-04-08  
halk 写道

msino 写道
halk 写道两个分别由什么作用?stardict_tools.jar 用来读取gzip格式的字典文件, 由传入的单词返回翻译结果knopflerfish-osgi.jar看这里 http://www.knopflerfish.org/download.html还是想看你stardict_tools.jar 包里的代码,那才是精华..


哈哈,反编译
3 楼 halk 2009-04-07  
msino 写道

halk 写道两个分别由什么作用?stardict_tools.jar 用来读取gzip格式的字典文件, 由传入的单词返回翻译结果knopflerfish-osgi.jar看这里 http://www.knopflerfish.org/download.html

还是想看你stardict_tools.jar 包里的代码,那才是精华..
2 楼 msino 2009-04-06  
halk 写道

两个分别由什么作用?

stardict_tools.jar 用来读取gzip格式的字典文件, 由传入的单词返回翻译结果

knopflerfish-osgi.jar看这里 http://www.knopflerfish.org/download.html
1 楼 halk 2009-04-06  
两个分别由什么作用?

相关推荐

    读取stardict字典

    本话题将深入探讨如何使用C++来读取Stardict字典文件并将其转换为SQL格式,以便于进一步的数据分析和处理。 首先,我们需要理解Stardict的文件结构。Stardict采用一种高效的存储方式,包括词典索引文件(.idx)和...

    星际译王Stardict词库 完整打包下载 BT(700+m)

    星际译王(StarDict)在Linux, Windows, 甚至Mac OS X上都相应的版本, 因为其开源的缘故, 许多智能手机(iPhone, 黑莓, Maemo, Meego, Symbian, WM)都有移植版读取Stardict词库的手机词典. 这词库我自己本人在用的 --...

    StarDict 电子词典 C++ 源代码

    StarDict 源代码,C++ 编写,给需要的朋友以作参考。

    stardictd:StarDict 服务器和在线词典网站

    这些文件通常包含单词、词义、例句等信息,采用二进制格式存储,以提高读取速度。服务器在接收到查询请求后,会解析这些文件,快速定位到所需的信息,然后将结果显示给用户。这种高效的文件存储和检索方式是 ...

    xdxf_makedict:XDXF —一种字典格式,用于存储没有表示形式的单词定义

    开发者可以利用Pyglossary读取、创建和更新XDXF字典,实现字典内容的自动化管理和更新。 总结来说,XDXF是一种强大的字典格式,尤其适合处理具有复杂语义信息的词汇资源。它通过XML的结构化和扩展能力,为词典制作...

    linux星际译王part1

    4. stardict-kdic-computer-gb-2.4.2:这个文件可能包含了计算机相关的词汇,对于IT从业者或者对计算机技术感兴趣的用户特别有用。 5. stardict-cedict-gb-2.4.2:这可能是一个包含了中文到英文的大型词汇库,特别是...

    基于Qt的简易star-dict英汉词典

    3. **词典数据处理**:为了将stardict格式的词典数据展示给用户,开发者需要实现数据读取、解压、解析等功能。这可能涉及二进制文件操作、字符串编码处理和JSON或XML解析,因为stardict数据可能包含多种格式。 4. *...

    英汉汉英词典Access数据库

    对于开发者来说,将这个数据库整合到自己的软件项目中,可以利用Access提供的API接口,轻松地读取和操作数据。例如,可以开发一个桌面应用,用户输入单词,程序就能即时从数据库中检索出对应的翻译。同时,由于...

    nDict-开源

    4. **Stardict2NDict.exe**:Stardict是一个流行的开源字典软件,这个文件可能是用于将Stardict字典转换为nDict格式的转换工具。 5. **exit.png、search.png、index.png、menu.png**:这些都是图形界面的图标资源,...

    javadict-开源

    《开源Java字典:javadict的探索与应用》 在信息技术日新月异的今天,开源软件成为了软件开发领域的重要组成部分。它们以其开放性、灵活性和社区支持的优势,为开发者提供了丰富的工具和资源。今天我们要关注的是一...

Global site tag (gtag.js) - Google Analytics