1

鉴于我们使用下面的代码 Set paths = 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 吗?

谢谢

4

1 回答 1

3

未经测试,我在 JavaDoc 中看到以下内容getResourcePaths()

指示子目录路径的路径以 / 结尾。

[...]

例如,对于包含以下内容的 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/"}

似乎您可以简单地依赖路径的最后一个字符。

于 2012-04-19T18:59:58.137 回答