如何为接受 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 来复制内容。
我正在使用提供以下功能的外部 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 来复制内容。