gpt4 book ai didi

Java 从项目基目录读取一个文件夹

转载 作者:行者123 更新时间:2023-11-30 06:21:42 26 4
gpt4 key购买 nike

我有一个具有典型项目结构的 Maven 项目。在项目的基础上,我有一个名为 res 的目录,其中包含一些资源(> 500 MB)。我正在尝试使用

this.class().getClassLoader().getResourceAsStream("res/xxx")

此代码片段从该文件夹中读取,但它返回一个空资源流。我在下面有一些解决方法,但由于下面解释的原因,这些方法都 Not Acceptable 。

  1. 我可以将文件夹移动到 {base}/target/classes,它会被读取,但当我执行 mvn clean 时它也会被清理。因此,这种方法不起作用。出于某种原因,将路径指定为 ../../res/xxx 也不起作用。
  2. 我可以将文件夹移动到 {base}/src/resources,但随后它会被复制到 target/classes 和 jar。因此,这也是 Not Acceptable 。
  3. 虽然我愿意尝试一些其他的 Java API,但我可能不得不使用类加载器机制,因为有一些外部库组件也在尝试使用类似的方式访问 res 文件夹方法。

有什么方法可以从项目基目录中读取 res 文件夹吗? pom.xml 文件中是否有一些设置可以帮助我解决这个问题?

最佳答案

使用 this.class().getClassLoader().getResourceAsStream("/res/xxx") 然后无论实际文件/文件夹位置如何,您都将从类路径的根目录读取在 Windows 或 Linux 中。这实际上是最安全的文件读取方式之一,尤其是当您不知道您的应用程序最终将如何部署时。

这意味着您的类路径必须包含 res 的父级,并且在部署应用程序时必须复制 res/

否则,如果你想使用相对路径,试试这个片段(取自这个 SO answer ):

String filePath = new File("").getAbsolutePath();
filePath.concat("path to the property file");

关于Java 从项目基目录读取一个文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20118500/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com