JavaSpring-如何使用类路径指定文件位置?
如何使用类路径指定Spring项目中的文件位置 这就是我目前拥有的:JavaSpring-如何使用类路径指定文件位置?,java,spring,classpath,Java,Spring,Classpath,如何使用类路径指定Spring项目中的文件位置 这就是我目前拥有的: FileReader fr = new FileReader("C:\\Users\\Corey\\Desktop\\storedProcedures.sql"); 这是硬编码到我的桌面。我希望能够使用项目中文件的路径 FileReader fr = new FileReader("/src/main/resources/storedProcedures.sql"); 有什么建议吗?我们是在谈论标准吗?不起作用,但没有它也
FileReader fr = new FileReader("C:\\Users\\Corey\\Desktop\\storedProcedures.sql");
这是硬编码到我的桌面。我希望能够使用项目中文件的路径
FileReader fr = new FileReader("/src/main/resources/storedProcedures.sql");
有什么建议吗?我们是在谈论标准吗?不起作用,但没有它也不难
/src/main/resources
maven目录内容放在类路径的根目录中,因此您可以使用以下方法简单地检索它:
InputStream is = getClass().getResourceAsStream("/storedProcedures.sql");
如果结果不是null
(未找到资源),请将其包装在读取器中:
Reader reader = new InputStreamReader(is);
看起来您有maven项目,因此资源位于类路径中 追求
getClass().getResource("classpath:storedProcedures.sql")
Spring有org.springframework.core.io.Resource,它是为这种情况而设计的。可以从context.xml向bean传递类路径
<bean class="test.Test1">
<property name="path" value="classpath:/test/test1.xml" />
</bean>
输出
D:\workspace1\spring\target\test-classes\test\test1.xml
现在,您可以在新的FileReader(文件)中使用它。中的@NimChimpsky的答案是: 使用和接口。并确保正确添加了资源目录(将
/src/main/resources/
添加到类路径中)
请注意,Resource有一个获取java.io.File
的方法,因此您还可以使用:
Resource resource = new ClassPathResource("storedProcedures.sql");
FileReader fr = new FileReader(resource.getFile());
classpath:
prefix在核心Java中不起作用,它是特定于Spring的。当然,问题是关于Spring
您可以将setter中的资源替换为File,以避免调用path.getFile();这在春天对我来说真的很管用,但我如何在写作中做到这一点呢?我已经尝试了各种BufferedWriter
实现,但没有一个能完全解决我的问题!我不知怎么读了文件,但有人能告诉我在写作时应该使用什么吗?
Resource resource = new ClassPathResource("storedProcedures.sql");
InputStream resourceInputStream = resource.getInputStream();
Resource resource = new ClassPathResource("storedProcedures.sql");
FileReader fr = new FileReader(resource.getFile());