InputStream inp = new FileInputStream("src/main/resources/ExportHour.xls");
我的Java Spring项目的src / main / resources文件夹中有一个文件。 我试图在我的一个控制器中创建一个输入流,但是我总是得到一个未找到文件的异常。当我将路径位置更改为专门指向我机器上的文件时,它可以正常工作。
我可以通过任何方式在java项目中找到文件吗?
答案 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根目录下。