为了账号安全,请及时绑定邮箱和手机立即绑定

弹簧在资源中找不到文件

弹簧在资源中找不到文件

PIPIONE 2022-09-14 16:34:11
我有以下行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但我确实有计算.csv在资源文件夹中。这是为什么呢?我需要从资源文件夹中读取文件,它也应该在服务器环境中工作编辑:ClassLoader classLoader = getClass().getClassLoader();     File file = new File(classLoader.getResource("calculation.csv").getFile());工作同样好,所以根本不是。编辑2:尝试使用文件夹。我现在在我的资源文件夹中有计算.csv和csv /计算.csv。上述方法均不起作用,并添加了 /csv/。这个东西想要什么样的路?!编辑3:阿安德File file = new ClassPathResource("calculation.csv").getFile();也是没去的,到底是什么。
查看完整描述

1 回答

?
慕勒3428872

TA贡献1848条经验 获得超6个赞

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

classLoader.getResource("calculation.csv")工作,因为你使用类装入器来获取资源,而不是文件系统来获取文件(这是File api所做的)。它可以工作,如果你要处理非打包的应用程序。将应用程序打包到JAR中后,文件路径将如下所示 - 注意标记(这也是您将看到的)。因此,基本上它将返回实例,您无论如何都无法使用,因为文件系统无法访问它。your/path/to/jar.jar!someResource!File

或者,您可以尝试先将其解压缩,然后使用解压缩的文件。ResourceUtiuls#extractJarFileURL(URL jarUrl)

我认为,在大多数情况下,这是要走的路,我认为阅读资源内容也应该符合您的需求。Class#getResourceAsStream


查看完整回答
反对 回复 2022-09-14
  • 1 回答
  • 0 关注
  • 65 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信