【问题标题】:Open file that is in the resource folder/inside jar [duplicate]打开资源文件夹/内部 jar 中的文件 [重复]
【发布时间】:2014-01-28 04:07:19
【问题描述】:

我有标准的maven项目结构:

-src
 |
 --main
   | 
   ---java
   ---resources
      |
      ----file.txt

我需要在应用启动时读取此文件(读取 DB 架构并执行 SQL 脚本,因此此文件通过 FileReader 打开)。构建应用程序后,使用以下代码从project/target/classes/file.txt 获取它:

getClass().getResource("/file.txt").getFile()

此文件也出现在结果 jar 文件的根目录中。并且应用启动后无法访问,因为它是在jar文件附近而不是里面搜索的。

当这个文件在 jar/resource 文件夹中时如何访问它?

【问题讨论】:

  • 当你使用类加载器而不是类时发生了什么?删除斜线后发生了什么?
  • 当我删除斜线 - NPE 发生。如果我使用 ClassLoader 并删除斜杠,则会在 target/classes/ 中搜索文件。
  • 您确定您的资源目录包含在 jar 中吗?如果有,在哪里?
  • @KevinWorkman,如果我解压结果 jar 文件,我的 file.txt 就在它的根目录中。

标签: java maven


【解决方案1】:

您需要将文件作为资源读取,而不是作为文件读取

InputStream stream = getClass().getClassLoader().getResourceAsStream("file.txt");

相关问题和答案可以在这里找到:

How to really read text file from classpath in Java

【讨论】:

  • 是的,我已经尝试过了,我认为getResourceAsStream 是最好的方法。
猜你喜欢
  • 1970-01-01
  • 2022-01-24
  • 2011-12-18
  • 2020-05-27
  • 1970-01-01
  • 1970-01-01
  • 2018-04-01
  • 1970-01-01
  • 2012-12-07
相关资源
最近更新 更多