【问题标题】:Reading a Dictionary Text file from a .jar [duplicate]从.jar中读取字典文本文件[重复]
【发布时间】:2023-12-11 00:17:02
【问题描述】:

我正在做一个项目,并被赋予了查看输入字符串是否在 jar 文件的字典中的任务。在我的项目资源管理器中,可以在 .jar 下找到字典,如下所示:

Dictionaries.jar
|-->com.backwards.url
    |-->WordLists.class
        |--->Dictionary.ListOne.txt
        |--->Dictionary.ListTwo.txt

有没有一种简单的方法可以阅读这些词典,更重要的是查看其中是否包含单词?

字典文件本身只是一个单词列表,即:

apple
banana
clementine
...

【问题讨论】:

  • 这应该有助于访问类路径中的文件:*.com/questions/793213/…
  • 您想从Java's codefrom bash 访问JAR 的内容吗?
  • 在我的代码中。我想做一个函数来检查一个单词是否在这些列表中,然后相应地处理它
  • 以前有人问过这个问题,您是否费心阅读此处已发布的链接?这些向您展示了如何访问文件,我们不会为您编写检查逻辑。

标签: java dictionary


【解决方案1】:

如果您需要更详细的答案,请随时告诉我。

public void readDic() {     
    URI uri = null;
    File file = null;
    JarFile jarFile = null;

    try {
        uri = getClass().getResource("/resource/Dictionaries.jar").toURI();
        file = new File(uri);
        jarFile = new JarFile(file);            

    } catch (IOException e) {
        // TODO Auto-generated catch block
            e.printStackTrace();
    } catch (URISyntaxException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    if(jarFile != null) {
        Enumeration<JarEntry> entries = jarFile.entries();
        while (entries.hasMoreElements()) {
            this.findKeyWord(entries.nextElement());
        }
    }

}

private void findKeyWord(JarEntry entry) {
       String name = entry.getName();
       System.out.println(name);

       if(name.endsWith(".txt")) {
         //Find your keyword
       }

}

【讨论】: