System.getProperty(" user.dir")在控制台和Web应用程序中提供不同的路径

时间:2017-09-07 05:54:09

标签: java eclipse file path

我想了解System.getProperty("user.dir")在不同应用程序(如控制台应用程序,Web应用程序等)中的工作情况。

控制台应用程序 Web应用程序运行时,它提供了不同的路径。以下是示例 - :
在控制台应用程序中运行时,打印如下:

  

D:\ eclipse workspace mars \ ResearchProject

这是项目的根目录,其中java类文件具有System.getProperty("user.dir")代码行。

另一方面,如果我从某个servlet / service / business / dac java类运行System.getProperty("user.dir")代码,则打印如下:

  

d:\蚀-JEE-MARS -2- win32的\蚀

这是eclipse的根文件夹。

System.getProperty("user.dir")如何适用于不同类型的应用程序?
有没有办法获取Web应用程序的根目录?

1 个答案:

答案 0 :(得分:2)

  

System.getProperty(“user.dir”)如何适用于不同类型的应用程序?

在所有情况下,它的工作方式完全相同。它返回由启动应用程序的应用程序指定的“当前目录”。

  • 对于交互式shell,它将是启动应用程序的shell(或子shell)的当前目录。

  • 对于shell脚本或本机启动程序,它将是脚本或启动程序设置的当前目录。 (例如,当您使用“catalina.sh”脚本启动Tomcat时,脚本会设置当前目录。)

  • 对于Eclipse启动的应用程序,它将是您正在使用的启动配置设置的当前目录。 默认是项目目录,但您可以在启动配置中覆盖它。

  

有没有办法获取Web应用程序的根目录?

我假设您指的是Web容器中已部署的Web应用程序的根目录。

String path = request.getServletContext().getRealPath("/");

更多详情:

但是,通过文件系统访问webapp文件有各种“陷阱”。一个是他们可能在任何时候通过重新部署而受到破坏。 更好的方法是使用getResourceAsStream访问已部署的webapp中的“文件”。