eclipse中的文件路径错误? (Java Spring)

时间:2012-09-26 20:07:51

标签: java spring input io

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

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

我可以通过任何方式在java项目中找到文件吗?

2 个答案:

答案 0 :(得分:2)

听起来你可以只是改变你的过程的工作目录 - 我怀疑它不在你认为的地方。例如,我建议你写

File file = new File("src/main/resources/ExportHour.xls");

然后记录file.getAbsolutePath(),查看它正在使用的确切文件。

但是,你几乎可以肯定正在使用FileInputStream。最好使用类似的东西:

InputStream inp = Foo.class.getResourceAsStream("/ExportHour.xls");

...对于某个类Foo,它有一个包含所需资源的类加载器。

(或者可能/resources/ExportHour.xls",具体取决于您的构建结构。)

即使你已经将所有这些构建到一个jar文件中,你仍然可以打开资源。

答案 1 :(得分:2)

尝试使用spring ClassPathResource

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

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