gpt4 book ai didi

java - 我可以将 Netbeans "empty file"作为已编译 jar 文件的一部分吗?

转载 作者:行者123 更新时间:2023-12-01 13:48:10 25 4
gpt4 key购买 nike

我有 80,000 个单词用于填字游戏(以及其他)拼图单词模式匹配器。 (用户输入“ba??”并获取“球、婴儿、银行……”等内容,或输入“ba*”并获取上述内容以及“ bat 、篮子、狒狒……”。 )

我将这些单词放入 Netbeans“空文件”中,并将其命名为“字典”。该文件的内容只有 (80,000) 个单词,每行一个。这段代码就像一个阅读字典的魅力(过滤器的代码被省略):

  static void showMatches(String pattern, String legal, String w) throws IOException
{
Path p = Paths.get("C:\\Users\\Dov\\Documents\\NetBeansProjects\\Masterwords\\src\\masterwords\\dictionary");

String word;

Scanner sc = new Scanner(p).useDelimiter("\r");

while(sc.hasNext()){

word = sc.next().substring(1);
gui.appendOutput(word);
}

sc.reset();
}

有没有一种方法可以使文件(名为“字典”)成为编译后的 jar 文件的一部分,这样我只需要将一个文件“发送”给新的(基本上是无助的)用户?

另一个令人好奇的问题......

是否可以将 Paths.get(...) 的参数设置为“masterwords/src/dictionary”之类的内容,以使 Scanner 对象能够读取它的连接? 我我想知道这是否与我的第一个问题的答案有关。 (如果有办法,我就不会偶然发现它。无论我使用什么类似的字符串,我都不会收到错误、没有输出、没有“构建成功”——必须单击“运行”>“停止构建/运行”。)

最佳答案

根据您的描述,我不确定我的解决方案是否能解决您的问题,但让我按照我的理解重述一下问题:您有一个依赖于字典资源的 .jar 文件。该资源可能会发生变化,并且您希望能够更新它,而不必发送包含新字典的全新 .jar。

如果我没理解错的话,你想要的是这样的东西:

private File getInstallPath()
{
return new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath());
}

这将返回 .jar 文件的安装目录,您可以在其中放置字典资源,以便 .jar 知道在哪里可以找到它。当然,现在您遇到了一些培训问题,因为用户可以移动、删除或放错您的词典文件。

第二部分:

现在您已经澄清了您的问题,让我再次重申:您希望能够读取 .jar 文件中包含的任意文件。美好的。您可能尝试将文件作为文件打开,但是一旦文件位于 .jar 中,您就需要将其视为资源。

尝试使用:

Class myClass = Class.forName("MyClass");
ClassLoader myLoader = myclass.getClassLoader();
InputStream myStream = myLoader.getResourceAsStream(myFile);

你真的需要我解释一下“myClass”、“myLoader”等指的是什么吗?提示:“myClass”是您需要读取该文件的类。

关于java - 我可以将 Netbeans "empty file"作为已编译 jar 文件的一部分吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20183438/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com