如何为接受 File 参数的函数提供类路径资源?

How to provide a classpath resource to a function accepting a File parameter?

我正在使用提供以下功能的外部 API:

public void process(File file) {
}

在我的例子中,要提供的文件位于类路径中的 JAR 中。有没有办法向 process(File) 提供代表此文件的 File

我尝试了以下方法:

new File(getClass().getClassLoader().getResource("my-file.txt").toURI()))

这给出了错误:URI is not hierarchical

我做了一些研究,了解到类路径上的文件不应被视为常规文件,而应被视为资源。这让我相信没有简单的方法可以为该资源构建 File

我应该先将资源复制到一个临时文件吗?

理想情况下,您应该修复 API,它确实已损坏。否则,获得 File 的唯一可靠方法是复制到一个临时的。您可能需要使用 Files.createTempDirectory and then something like Apache Commons IO IOUtils 来复制内容。