假设我们使用下面的代码 设置路径 = servletCtxt.getResourcePaths("/app/themes");
我们如何判断路径中的路径是目录还是实际文件?
这通常是一场紧张的 war 。
我确实找到了这个,但我打赌它不可靠:
当它是一个文件时
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 吗?
谢谢
最佳答案
未经测试,我在 getResourcePaths()
的 JavaDoc 中看到以下内容:
Paths indicating subdirectory paths end with a /.
[...]
For example, for a web application containing:
/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("/")
would return{"/welcome.html", "/catalog/", "/customer/", "/WEB-INF/"}, and getResourcePaths("/catalog/")
would return{"/catalog/index.html", "/catalog/products.html", "/catalog/offers/", "/catalog/moreOffers/"}
.
似乎您可以简单地依赖路径的最后一个字符。
关于java - 确定来自 ServletContext 的资源是文件还是目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10234813/