1

我正在创建一个 Java 应用程序,我需要在其中读取我无法读取的模板。那是因为我无法找到具有正确路径的文件。

代码结构如下:

模板读取类文件位于 src/main/java/com.prototype.main 中,模板位于 src/main/java/templates

这意味着,当我创建一个 jar 时,三个文件夹将是 3 个文件夹: com templates META-INF

现在从包下的任何类我如何访问模板?我尝试了以下方法:

  1. new File("/") 如果是 web 应用程序,它会从应用程序的根目录中选择,但在独立应用程序中,它是系统的用户目录
  2. System.getProperty("user.dir") 给出项目目录
  3. new App().getClass().getName() 显示以点分隔的包名

因此,如果我想读取 /templates/some.xml 之类的模板文件,如何获取该文件的完整路径?

感谢您提前提供任何帮助。

4

2 回答 2

2

嵌入式资源不是File,而是资源。

Class#getResource您可以使用或Class#getResourceAsInputStream根据您的需要阅读这些资源。

例如...

URL url = getClass().getResource("/templates/some.xml");

将返回URL对命名资源的引用。

于 2013-09-04T06:50:35.157 回答
1

您可以使用

InputStream i=this.getClass().getClassLoader().getResourceAsStream("templates/some.xml");

就像在 java 中使用 slick2D 库在 xml FileNotFoundException 中描述的那样

于 2013-09-04T06:52:15.003 回答