Java 在src中读取相对静态文件
我在src中有一个包含一些静态内容的.tpl文件。 e、 g.Java 在src中读取相对静态文件,java,Java,我在src中有一个包含一些静态内容的.tpl文件。 e、 g.src/A/B/C/test.tpl,我试图从该文件的类同级读取它(src/A/B/C/test) 我怎么也找不到它!FileReader抛出FileNotFoundException 解决方案:Class.getResource()有效。问题在于默认情况下不会编译的tpl扩展。IDE具有添加要编译的扩展的设置。我使用了.html而不是更新编译器设置 Test.class.getResource("/A/B/C/test.html")
src/A/B/C/test.tpl
,我试图从该文件的类同级读取它(src/A/B/C/test
)
我怎么也找不到它!FileReader抛出FileNotFoundException
解决方案:Class.getResource()有效。问题在于默认情况下不会编译的tpl扩展。IDE具有添加要编译的扩展的设置。我使用了.html而不是更新编译器设置
Test.class.getResource("/A/B/C/test.html").getPath().replace("%20", " ")
你应该使用
将文件移动到src/main/resources,然后尝试以下操作如何-
ApplicationContext context = new ClassPathXmlApplicationContext("classpath:/test.tpl");
try {
context.getClassLoader().getResourceAsStream("test.tpl");
...
}
catch (IOException ex) {
ex.printStackTrace();
}
您需要如何处理该文件?当它在JAR中时,您可以获取对它的URL引用或将其作为InputStream打开,但仅此而已。如果您需要文件的路径,那么您必须在运行时将其移动或从JAR中提取出来。这是模板文件。我读了它,替换了一些占位符和标签,然后将其发送到打印和刷新…如果它起作用,你应该接受答案。。。对的使用“this”在静态上下文中不起作用。所以你不能这么做。getClassLoader()。只是一个例子。我没有看到阿维拉姆的回答。
ApplicationContext context = new ClassPathXmlApplicationContext("classpath:/test.tpl");
try {
context.getClassLoader().getResourceAsStream("test.tpl");
...
}
catch (IOException ex) {
ex.printStackTrace();
}