代码之家  ›  专栏  ›  技术社区  ›  Dan Inactive

jsp:具有相对路径的filereader抛出filenotfoundexception

  •  2
  • Dan Inactive  · 技术社区  · 14 年前

    我有一些嵌入式Java代码,其中我试图加载一个属性文件,它位于与JSP文件相同的文件夹中:

    Properties titles = new Properties();
    titles.load(new FileReader("titles.txt"));
    

    上面的代码抛出一个filenotfoundexception。

    在这种情况下,如何准确地引用“当前文件夹”?

    3 回复  |  直到 13 年前
        1
  •  4
  •   Community datashaman    7 年前

    两件事:

    1. JSPs不应该包含Java代码。使用mvc框架(springmvc、stripes等)作为控制器,使用jsp作为视图。那会让生活更轻松
    2. 您不应该通过Web应用中的文件系统访问资源文件,请使用类加载器访问 as suggested by redlab . 问题是web应用程序可能在文件系统上被解包,也可能没有解包,这取决于servlet容器

    我看到的主要问题是,您不能对路径做任何有效的假设,因为您不知道编译的jsp在哪里

    因此:创建一个控制器类,将属性文件放在同一个文件夹中,并通过 getClass().getClassLoader().getResourceAsStream("titles.txt");

        2
  •  3
  •   Bozho    14 年前

    FileReader 需要绝对路径,或者相对Java运行的地方。但对于web应用程序,这通常是通过 /etc/init.d/tomcat startup 你不能依赖当前的目录。

    您可以通过调用 servletContext.getRealPath("/relative/path/to/file.txt")

    您可以通过调用 request.getRequestURL()

    也就是说,您最好在一个servlet中使用这段代码,而不是jsp-jsp是一种视图技术,逻辑不应该放在其中。

        3
  •  1
  •   bluish dmajkic    13 年前

    通过使用加载类的类加载器,您可以轻松获取文件。

    getClass().getClassLoader().getResourceAsStream("titles.txt");
    

    但是我不知道它是否能与jsp一起工作

    你也可以用 ServletContext.getResourceAsStream("") ,但是你必须 满的 网络内容相对路径。