当前位置: 代码迷 >> java >> 如何从java类中读取文件,两者都在同一个jar中
  详细解决方案

如何从java类中读取文件,两者都在同一个jar中

热度:95   发布时间:2023-08-02 10:49:51.0

我在jar中有以下结构

myjar.jar - > com - > MYProgram.class

  -> file.txt 

在MYProgram中,我想做:

getClass().getResourceAsStream("../file.txt")

当我尝试读取输入流时,我得到NullpointerException。

哪里出错了?

要么使用

getClass().getResourceAsStream("/file.txt")

要么

getClass().getClassLoader().getResourceAsStream("file.txt")

ClassLoader.getResourceAsStream始终采用“绝对”资源名称。)

我不相信导航“目录层次结构”在getResourceAsStream - 路径要么必须是相对于给定的类,而不是导航备份树,要么必须绝对开始。

尝试绝对路径:

getClass().getResourceAsStream("/file.txt")

的Javadoc说:

  • 如果名称以'/'('\\ u002f')开头,则资源的绝对名称是'/'后面的名称部分。
  • 否则,绝对名称具有以下形式:

      modified_package_name/name 

    其中modified_pa??ckage_name是此对象的包名称,其中'/'替换为'。' ( '\\ u002e')。

这会把你的路径变成这条绝对的路径:

/com/../file.txt

我不认为..符号是受到尊重的。 它确实寻找上述绝对路径。

  相关解决方案