如何在Java中解析静态文件的路径?

4
我该如何找到嵌入在jar包中的xml文件(名称为myXml.xml)的路径呢?绝对路径显然不可用,但相对路径也遇到了问题。我不能将它放在home文件夹下,因为Java会根据调用访问Java类的位置返回不同的home文件夹。例如来自于:
- 命令提示符 - 应用服务器 - Eclipse启动器 - Eclipse远程调试等
是否有一种方法使得我的访问类(与xml文件在同一jar包中)可以无论jar文件在哪里,都可以访问嵌入的xml文件,而不需要关注谁在尝试访问它?
3个回答

6
您需要做的是使用类加载器来加载文件:
InputStream stream = this.getClass().getClassLoader().
                                              getResourceAsStream("myXml.xml");

以上代码假定文件位于您的jar顶层。

1
而對於靜態類別 MyClass.class.getResourceAsStream("myXml.xml"),它可以正常工作。謝謝。 - WSK

0

您可以使用ClassLoader#getResource(..)从类路径获取文件的InputStream:

Object.class.getClassLoader().getResource().openStream()

此外,ClassLoader中还有一些其他方法可能对您的情况有用。


0
你尝试过在Class类中使用getResource和getResourceAsStream方法吗?通常在这种情况下,这些方法是我不得不求助的方法。
希望这可以帮到你。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接