Java Spring在资源中找不到文件

Java Spring在资源中找不到文件,java,spring,file,Java,Spring,File,我有以下几行 File file = ResourceUtils.getFile("classpath:calculation.csv"); 我也试过了 File file = ResourceUtils.getFile("classpath:/calculation.csv"); 但两者都会犯错误 java.io.FileNotFoundException: class path resource [calculation.csv] cannot be resolved to absolu

我有以下几行

File file = ResourceUtils.getFile("classpath:calculation.csv");
我也试过了

File file = ResourceUtils.getFile("classpath:/calculation.csv");
但两者都会犯错误

java.io.FileNotFoundException: class path resource [calculation.csv] cannot be resolved to absolute file path because it does not exist
但我在“按资源”文件夹中有calculation.csv。。 为什么会这样

我需要从resources文件夹中读取文件,它也应该在服务器环境中工作

编辑:

工作一样好,所以一点也不

编辑2: 已尝试使用文件夹。。我的资源文件夹中现在有calculation.csv和csv/calculation.csv

以上工作均未完成,添加了/csv/added

这东西想走哪条路

编辑3:

aaand

File file = new ClassPathResource("calculation.csv").getFile();
也不行,这是什么..

加载文件(作为文件)不起作用。您必须将其用作资源。JAR中的文件无论如何都不能作为文件使用。这也是您的“检查”代码显示的内容

classLoader.getResource(“calculation.csv”)
可以工作,因为您使用classLoader获取资源,而不是使用文件系统获取文件(这是文件api所做的)。如果您要处理非打包应用程序,它可能会起作用。一旦您将应用程序打包到JAR中,文件路径将类似于您的/path/to/JAR.JAR!someResource-注意
标记(这也是您将看到的)。所以基本上它会返回
文件
实例,您无论如何都无法使用它,因为文件系统无法访问它

您也可以尝试先使用
ResourceUtiuls#extractJarFileURL(URL-jarUrl)
提取它,然后使用提取的文件


我认为,在大多数情况下,
Class#getResourceAsStream
是一种方法,我认为阅读资源内容也应该符合您的需要。

您在哪里运行与文件相关的代码?与文件相关的代码?文件应该在jar中的resources文件夹中吗@miketungsrc/main/resources
中的所有内容都是类路径的一部分,不是文件资源。不能使用
File
从类路径内部读取内容。您必须直接使用
getInputStream
而不是
getFile
。。。文件必须是物理文件,而不是存档中的资源。。谢谢,我想我现在拿到这个了
File file = new ClassPathResource("calculation.csv").getFile();