如何获得图像绝对路径?

如何在java中获取图像路径?

我正在使用eclipse,我想在jsp中显示图像,我想给出像“/images/logo.jpg”这样的路径但是在执行页面时它会得到nullpointerexception。

如果我给出完整路径,它的工作方式就像“d:/project/images/logo.jsp”。如何以绝对路径显示图像?

您应该尽可能避免在java.io使用相对路径。 任何相对路径都将相对于当前工作目录,这取决于您启动应用程序的方式,并且无法从代码内部无法控制。 当作为例如Tomcat服务启动时,它将相对于c:/path/to/tomcat/bin 。 在Eclipse中运行时,它将相对于c:/path/to/eclipse/project/bin 。 在命令控制台中运行时,它将相对于当前打开的文件夹。 等等。 你不想依赖它。 馊主意。

在JSP / Servlet Web应用程序的情况下,基本上有两种方法可靠地使用相对路径获取绝对资源路径:

  1. 运行时类路径中检索它(所有类和库都在那里):

     ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); String path = classLoader.getResource("/images/logo.jpg").getPath(); 
  2. webcontent (所有JSP文件和/WEB-INF文件夹所在的位置)检索它:

     ServletContext context = getServletContext(); // Inherited from HttpServlet. String path = context.getResource("/images/logo.jpg").getPath(); 

如果您最终想要的是一个InputStream ,您可能打算使用new FileInputStream(path)创建它,那么您应该使用getResourceAsStream()方法:

  1. 从classpath:

     InputStream content= classLoader.getResourceAsStream("/images/logo.jpg"); 
  2. 或webcontent:

     InputStream content = context.getResourceAsStream("/images/logo.jpg"); 

而不是/images/logo.jpg put images/logo.jpg即删除第一个斜线。