读取jar包中的xml文件

这是我的结构:

  • COM / myCompany中/ ValueReader.class
  • COM / myCompany中/资源/ values.xml

我可以在Eclipse项目中读取该文件,但是当我将它导出到.jar时,它永远找不到values.xml。

我尝试使用ValueReader.class.getResource()和ValueReader.class.getResourceAsStream()但它不起作用。

这有什么问题? 如何获取我的values.xml文件对象?

B.

您无法获取File对象(因为它不再是.jar中的文件),但您应该能够通过getResourceAsStream(path);将其作为流来获取getResourceAsStream(path); ,其中path是您class级的完整路径。

例如

 /com/mycompany/resources/values.xml 

您无法获取该File的文件,因为它位于jar文件中。 但是你可以得到一个输入流:

 InputStream in = ValueReader.class.getResourceAsStream("resources/values.xml"); 

getResourceAsStreamgetResource将类的包转换为文件路径,然后添加参数。 这将为路径/com/mycompany/resources/values.xml的文件提供流。

这将有效……

 Thread.currentThread().getContextClassLoader().getResource("com/mycompany/resources/values.xml") 

你可以使用以下方法在相同的类路径中提取jar然后获取你想要的东西:

  ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(zipfile.getCanonicalFile())));