1
InputStream inp = new FileInputStream("src/main/resources/ExportHour.xls");

我的 Java Spring 项目的 src/main/resources 文件夹中有一个文件。我试图在我的一个控制器中创建一个输入流,但是我总是得到一个找不到文件的异常。当我更改路径位置以专门指向我机器上的文件时,它工作正常。

有什么办法可以使文件可以在java项目中找到?

4

2 回答 2

2

听起来您可以只更改流程的工作目录-我怀疑它不是您认为的位置。例如,我建议你写

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 文件中,您仍然可以打开该资源。

于 2012-09-26T20:14:10.240 回答
2

尝试使用 spring ClassPathResource

InputStream inp = new ClassPathResource("ExportHour.xls").getInputStream();

那是因为 maven 中的资源文件夹直接放在你的 jar 文件中,即 ExportHours.xls 文件放在你的 jar 的根目录中。

于 2012-09-26T20:14:53.290 回答