InputStream inp = new FileInputStream("src/main/resources/ExportHour.xls");
我的 Java Spring 项目的 src/main/resources 文件夹中有一个文件。我试图在我的一个控制器中创建一个输入流,但是我总是得到一个找不到文件的异常。当我更改路径位置以专门指向我机器上的文件时,它工作正常。
有什么办法可以使文件可以在java项目中找到?
听起来您可以只更改流程的工作目录-我怀疑它不是您认为的位置。例如,我建议你写
File file = new File("src/main/resources/ExportHour.xls");
然后 log file.getAbsolutePath()
,查看它使用的确切文件。
但是,您几乎肯定不应该使用 a FileInputStream
。最好使用类似的东西:
InputStream inp = Foo.class.getResourceAsStream("/ExportHour.xls");
...对于某些Foo
具有类加载器的类,其中包含您需要的资源。
(或者可能/resources/ExportHour.xls"
,取决于您的构建结构。)
这样,即使您将所有这些都构建到 jar 文件中,您仍然可以打开该资源。
尝试使用 spring ClassPathResource。
InputStream inp = new ClassPathResource("ExportHour.xls").getInputStream();
那是因为 maven 中的资源文件夹直接放在你的 jar 文件中,即 ExportHours.xls 文件放在你的 jar 的根目录中。