java JSP:具有相对路径的FileReader引发FileNotFoundException
我有一些嵌入的Java代码,我试图在其中加载一个属性文件,该文件与JSP文件位于同一文件夹中:
Properties titles = new Properties();
titles.load(new FileReader("titles.txt"));
上面的代码引发FileNotFoundException
在这种情况下,如何准确地引用“当前文件夹”
你可以在下面搜索框中键入要查询的问题!
我有一些嵌入的Java代码,我试图在其中加载一个属性文件,该文件与JSP文件位于同一文件夹中:
Properties titles = new Properties();
titles.load(new FileReader("titles.txt"));
上面的代码引发FileNotFoundException
在这种情况下,如何准确地引用“当前文件夹”
# 1 楼答案
两件事:
我看到的主要问题是,您无法对路径是什么做出任何有效的假设,因为您不知道编译的JSP在哪里
因此:创建一个控制器类,将属性文件放在同一文件夹中,并通过
getClass().getClassLoader().getResourceAsStream("titles.txt");
从控制器类加载它# 2 楼答案
FileReader
需要运行java的绝对路径或相对路径。但是对于web应用程序,这通常是通过/etc/init.d/tomcat startup
完成的,您不能依赖于当前的目录您可以通过调用
servletContext.getRealPath("/relative/path/to/file.txt")
获得应用程序的绝对路径您可以通过调用
request.getRequestURL()
来获取URL的相对部分也就是说,您最好在servlet中使用此代码,而不是JSP-JSP是一种视图技术,不应将逻辑放在其中
# 3 楼答案
通过使用加载类的类加载器,您可以轻松地获取文件
然而,我不知道它是否能与JSP一起工作
您也可以使用
ServletContext.getResourceAsStream("")
,但是您必须给出完整的webcontent相对路径