Java - 从网络上下文加载文件
Java - load file from web context
我不明白为什么 fi.exists()
returns 这里是假的。我可以通过位于 contextPath+"/images/default.png
的浏览器浏览到该文件
String contextPath = req.getContextPath();
File fi = new File(contextPath+"/images/default.png");
exists = fi.exists();
我认为您误解了上下文路径是什么。
如果您的应用程序部署在 yourdomain.com/app
,上下文路径将为 /app
。
用于告诉客户端去哪里寻找资源。
当您执行 contextPath+"/images/default.png"
时,您的路径将取决于部署路径(在本例中为文件 /app/images/default.png
)。
如果你想要安装应用服务器旁边的文件,你可以使用"images/default.png"
。
如果您想访问资源文件,您可能想尝试 Thread.currentThread().getContextClassLoader().getResource("images/default.png")
而不是文件。
如果你想检查上下文相关的资源是否存在,你可以这样做:
boolean exists=req.getServletContext().getResource("images/default.png")!=null;`
或
String path=req.getServletContext().getRealPath("images/default.png");`
我需要使用 getRealPath() 而不是 getContextPath():
String path = req.getServletContext().getRealPath("/images/default.png");
File fi = new File(path);
我不明白为什么 fi.exists()
returns 这里是假的。我可以通过位于 contextPath+"/images/default.png
String contextPath = req.getContextPath();
File fi = new File(contextPath+"/images/default.png");
exists = fi.exists();
我认为您误解了上下文路径是什么。
如果您的应用程序部署在 yourdomain.com/app
,上下文路径将为 /app
。
用于告诉客户端去哪里寻找资源。
当您执行 contextPath+"/images/default.png"
时,您的路径将取决于部署路径(在本例中为文件 /app/images/default.png
)。
如果你想要安装应用服务器旁边的文件,你可以使用"images/default.png"
。
如果您想访问资源文件,您可能想尝试 Thread.currentThread().getContextClassLoader().getResource("images/default.png")
而不是文件。
如果你想检查上下文相关的资源是否存在,你可以这样做
boolean exists=req.getServletContext().getResource("images/default.png")!=null;`
或
String path=req.getServletContext().getRealPath("images/default.png");`
我需要使用 getRealPath() 而不是 getContextPath():
String path = req.getServletContext().getRealPath("/images/default.png");
File fi = new File(path);