关于 java:在 Eclipse JAR 导出中包含文本文件? | 珊瑚贝

Include text file in Eclipse JAR export?


我正在使用 FileInputStream 来读取 File 对象。我的程序在 Eclipse IDE 中运行时能够读取文本文件,但在作为 JAR 文件运行时不能。

我将其导出为 JAR file 而不是 Runnable JAR file,并且我知道该文本文件已包含在 JAR 文件中,因为我将其提取出来进行检查。

这是我的文件结构的样子:
enter

  • 您如何尝试访问您的文件?如果您尝试从文件系统中读取它,它将不会在 jar 中找到它。这个答案可能会有所帮助
  • 我在我的一个源文件中以这样的流访问我的文件:new FileInputStream(new File(“./learnaboutfonts.txt”)


我建议你把你的 learnaboutfonts.txt 放在 src 文件夹中(不是在包中),并在源代码中读取文件,如下所示:

1
2
3
Resource resource = new ClassPathXmlApplicationContext().getResource(“classpath:learnaboutfonts.txt”);
InputStream is = resource.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));

你可以使用 br 作为你想要使用的。快乐编码。

  • 不要忘记在构建路径中添加 spring-context jar (spring-context-3.2.0.RELEASE.jar)。


你应该使用类似的东西:

1
InputStream input = getClass().getResourceAsStream(“/learnaboutfonts.txt”);

请注意,诀窍是正确使用前导”/”。如果您不放置前导 /,那么它会在其调用的类的包中搜索文件。

  • 可能是个好主意。但是,它为 input 分配了一个空值,是否有任何可能的原因?
  • 要使上述代码正常工作,文件 learnaboutfonts 应该位于 jar 的根目录中。是吗?
  • 你的答案是正确的。实际上,文本文件应该在源文件夹中,而不是根文件夹中,我很抱歉。 1 :)


您如何访问您的文件?您可能需要一个相对文件路径,例如”./mytext.txt”)。

使用这个模式:

1
2
InputStream is = new getClass().getResourceAsStream(
                       “/text.txt”);

测试以将您的文本文件包含在您要访问该文件的类的包中。

  • 这不起作用。我得到 is 的空值。
  • 为此使用 “new Object()” 并不好笑。
  • 我从静态上下文中复制了它。是的,最好直接使用 getClass() :)。


来源:https://www.codenong.com/29853041/

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?