java spring-boot中目标文件夹中的代码

Code from target folder in java spring-boot

提问人:Sandeep Girolkar 提问时间:10/30/2023 更新时间:10/31/2023 访问量:58

问:

我已经使用 maven-plugin 在目标文件夹中生成了一个 zip 文件,现在我的目标是将该 zip 文件带入/获取/读取到 java 类中,因为逻辑需要该 zip 进行进一步处理 我尝试了各种可能的方法,提供了文件 f = new File(path) 的路径; 但是每次我使用 f.exists() 或 f.isFile() 检查时,它都会给出 false,因为很可能它无法在该路径上找到 zip, 所以我不清楚如何以及给出什么路径,SO 中也没有给出用例 有人可以帮忙吗?

尝试了所有建议的方法 Resource 和 resourceLoader 不能使用,因为它仅在我们从 src/main/resources 读取内容时使用,使用了 java.io 的文件但每次都失败 有人可以解释一下在Java Spring Boot中从目标文件夹中读取某些内容的路径以及如何提供路径吗?

spring-boot 目录 目标 java-io

评论

0赞 Andrew S 10/31/2023
这取决于应用程序的执行方式。运行应用程序时,当前目录是什么?目标目录相对于当前目录是否可用?
0赞 Henning Luther 10/31/2023
你的道路是怎样的,你尝试过哪一条?您读取的所有内容都来自 CLSSPath,在 MVN 中,它都在目标之下。源代码不是 CP 的一部分,只是编译/复制的工件。因此,请在构建后检查您的目标文件夹,如果它都存在您期望的内容
0赞 Nick Holt 10/31/2023
该目录是在运行生成时创建生成工件的位置;因此,除了生成计算机之外,该目录将不存在于任何地方。资源文件通常会添加到目录中,并在构建时包含在 jar 中。然后,您可以通过类加载器访问 jar 中的资源文件。targettargetresource
0赞 Community 11/1/2023
请提供足够的代码,以便其他人可以更好地理解或重现问题。

答:

0赞 Nick Holt 10/31/2023 #1

稍微解释一下您的问题,听起来您有一个要在运行时访问的资源文件,并且该资源文件在生成后不会更改。

应将资源文件添加到 ;这样做会在生成 jar 时将资源文件添加到 jar 的根目录中。src/main/resources

如果希望资源文件位于 jar 中的目录中,则只需在 resources 目录下创建该目录结构即可。

例如,如果希望资源文件位于 中,则应将资源文件放在 中。some/directorysrc/main/resources/some/directory

访问资源文件时,可以使用 ClassLoader.getResource(String) 或 ClassLoader.getResourceAsStream(String) 从类路径进行访问。

例如,如果我有一个名为 的资源文件,在 中,以下命令将从以下位置加载并打印此文件:my-resources.txtsrc/main/resources/some/directoryApplication.class

public class Application
{
  private static final String RESOURCE_FILE = "some/directory/my-resources.txt";

  public static void main(String[] args) throws IOException
  {
    try (
      InputStream in = Application.class.getClassLoader().getResourceAsStream(RESOURCE_FILE);
      BufferedReader reader = in != null ? new BufferedReader(new InputStreamReader(in)) : null;
    )
    {
      if (in == null) throw new IllegalStateException("Failed to find: " + RESOURCE_FILE);

      String line;
      while ((line = reader.readLine()) != null) System.out.println(line);
    }
  }
}