我有一些嵌入式Java代码,我正在尝试加载与JSP文件位于同一文件夹中的属性文件:
Properties titles = new Properties();
titles.load(new FileReader("titles.txt"));
上面的代码抛出FileNotFoundException。
在这种情况下,如何引用“当前文件夹”?
答案 0 :(得分:4)
两件事:
我看到的主要问题是你不能对路径做出任何有效的假设,因为你不知道编译的JSP在哪里
所以:创建一个控制器类,将属性文件放在同一个文件夹中,然后通过getClass().getClassLoader().getResourceAsStream("titles.txt");
答案 1 :(得分:3)
FileReader
需要绝对路径,或者相对于运行java的位置。但对于Web应用程序,这通常是通过/etc/init.d/tomcat startup
完成的,您不能依赖于当前目录。
您可以致电servletContext.getRealPath("/relative/path/to/file.txt")
您可以通过调用request.getRequestURL()
来获取网址的相对部分。
也就是说,你最好在servlet中使用这个代码,而不是JSP - JSP是一种视图技术,逻辑不应放在其中。
答案 2 :(得分:1)
通过使用加载类的类加载器,您可以轻松获取文件。
getClass().getClassLoader().getResourceAsStream("titles.txt");
但是我不知道它是否适用于JSP
您也可以使用ServletContext.getResourceAsStream("")
,但是您必须提供完整 webcontent-relative路径。