确定ServletContext中的资源是文件还是目录

时间:2012-04-19 18:50:51

标签: java servlets

鉴于我们使用下面的代码 设置路径= servletCtxt.getResourcePaths(“/ app / themes”);

如何判断路径中的路径是目录还是实际文件?

这通常是在拉链战争中。

我找到的是这个,但我认为它不可靠:

当它是文件时

servletCtxt.getResource(dir).getContent()
    returned (java.io.ByteArrayInputStream) java.io.ByteArrayInputStream@5a645a64

当它返回目录时:

(org.apache.naming.resources.FileDirContext) org.apache.naming.resources.FileDirContext@57155715

可以说我可以在getContent返回的内容中使用带有InputStream的instanceof吗?

由于

1 个答案:

答案 0 :(得分:3)

在没有测试的情况下,我在getResourcePaths()的JavaDoc中看到以下内容:

  

指示子目录路径的路径以/.

结尾      

[...]

     

例如,对于包含以下内容的Web应用程序

     
      
  • /welcome.html

  •   
  • /catalog/index.html

  •   
  • /catalog/products.html

  •   
  • /catalog/offers/books.html

  •   
  • /catalog/offers/music.html

  •   
  • /customer/login.jsp

  •   
  • /WEB-INF/web.xml

  •   
  • /WEB-INF/classes/com.example.OrderServlet.class

  •   
  • /WEB-INF/lib/catalog.jar!/META-INF/resources/catalog/moreOffers/books.html

  •   
     

getResourcePaths("/")将返回{"/welcome.html", "/catalog/", "/customer/", "/WEB-INF/"}, and getResourcePaths("/catalog/")将返回{"/catalog/index.html", "/catalog/products.html", "/catalog/offers/", "/catalog/moreOffers/"}

好像你可以简单地依赖路径的最后一个字符。