【问题标题】:How to read a directory in webapp folder of Maven web application如何读取 Maven Web 应用程序的 webapp 文件夹中的目录
【发布时间】:2012-03-08 16:49:05
【问题描述】:

我正在使用 Maven 网络应用程序。我需要在我的 webapp 文件夹中读取一个目录(例如:文件),如下所示,

Java.io.File file = new Java.io.File("path");

但是我不知道这里如何指定目录的路径。

【问题讨论】:

  • 这个问题和 Maven 有什么关系?
  • 我正在使用 Maven Web 应用程序。所以在 Maven 中工作的人会知道 Maven 应用程序中文件夹的层次结构。
  • 您认为 web-app 目录结构(部署在服务器上)与您的 maven 目录结构相同的假设是错误的

标签: java file file-io directory


【解决方案1】:

您不应提供本地路径地址。路径应该是一个相对地址,例如/files/images 在您的 Web 存档 (.war) 文件夹下。

要正确使用相对路径,我建议您将目标文件夹添加到 POM.xml 的资源定义中,查看这些页面 http://www.mkyong.com/maven/how-to-change-maven-resources-folder-location/ http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html

您可以通过以下方式轻松引用资源文件夹:

this.class.getResource("Mydirectory/SubDirectory");

【讨论】:

  • 我按你说的试过了。但它不起作用。 Java.io.File file = new Java.io.File("/files/subdirectory");
  • 您能否发送您的网络应用目录层次结构的屏幕截图?
  • 我的 web-app 目录层次结构是 Myapplication/src/main/webapp/Mydirectory/SubDirectory
  • @Gnik 您的网络应用程序目录结构可能与您的源结构不同
  • 您可以在您的 web-app 目录下定义一个文件夹作为 POM.xml 中的资源,然后您可以将它与 getResource() 调用一起使用。
【解决方案2】:

当对亲属路径的工作方式有疑问时,最好这样做:

System.out.println(new File("/my/desired/directory").getAbsolutePath());

这将打印出类路径查找文件的路径。

假设:

  • servlet 容器 webapps 目录位于:/var/lib/tomcat6/webapps
  • 您的网络应用程序名为my-webapp.war

您应该会看到以下输出:/var/lib/tomcat6/webapps/my-webapp/my/desired/directory

另一个指针:您提到您正在寻找webapp 目录。我希望你知道这个目录不会出现在*.war - 它的内容会

【讨论】:

  • 我使用 Glassfish 作为 Web 服务器
【解决方案3】:

War 文件在部署到应用服务器时并不总是展开,因此文件系统中可能根本不存在相对路径

最好的办法是使用类加载器中的 getResource,它将返回类路径(WEB-INF/lib 目录等)中的东西,或者使用 ServletContext 的getResource() 方法在 web 中查找东西应用程序本身。

【讨论】:

    猜你喜欢
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    • 2012-03-07
    • 1970-01-01
    • 2013-11-12
    • 2013-10-22
    • 2015-03-08
    • 2010-10-18
    相关资源
    最近更新 更多