首页 > 解决方案 > 使用路径对象动态使用 Maven 和 getResources?

问题描述

我有一个 Netbeans maven 项目,并且正在使用该src/main/resources文件夹来部署我的图片和一个帮助文件以及我正在编写的程序。

根据我对该主题的理解,此文件夹中的任何文件(以及包含它们的包)都归档在.jarNetbeans IDE 生成的生成文件中。我已经通过在压缩文件提取程序中打开 jar 来验证这一点。

这便于部署,之前我遇到了版本控制问题,有些图片已经过时,因为我之前使用磁盘上的文件夹来存放图片文件夹。

我有一个从图片文件夹中选择随机图片的子例程,但是在 jar 文件中实现它与我对主题的理解相冲突。

如果图片文件夹现在在 jar 存档中,我怎样才能获取Path这些文件的对象?我很清楚我可以Clazz.class.getResource("/pictures")用来获取文件夹的 URL 对象。我还可以将此 URL 转换为 URI 并将其提供给File构造函数并用于getPath获取磁盘上此文件夹的路径。

然后我可以打电话Files.list(picturesPath);获取路径列表并选择一个随机路径。

如果文件/文件夹只是磁盘上的常规文件/文件夹,则此过程可以正常工作,但它们不是,它们位于压缩的 jar 存档中。这让我很困惑。

我可以将这些我返回Path的文件夹视为典型文件夹并以我执行常规文件夹的典型方式操作它们吗?是否有技术巫术在起作用以使这种无缝衔接,或者我的假设中有一些微妙的谬误会阻止我使用类似的东西Files.list(picturesPath)

标签: javamaven

解决方案


推荐阅读