我想了解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应用程序的根目录?
答案 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中的“文件”。