0

当我想在 Java EE 中获得真实路径时,请使用以下说明:

String rootPath = getServletConfig().getServletContext().getRealPath("/");
System.out.println(rootPath);

结果是:C:\Users\saad\Desktop\pds.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Metier\

通常,我必须得到这个结果:

C:\用户\saad\桌面\pds\Metier\

任何人都可以帮助我吗?

4

2 回答 2

2

这是一个很好的例子,说明为什么“相对于应用程序的文件系统路径”的概念在 servlet 中确实没有意义。当 servlet 部署到容器中时,不能保证它驻留在真实的文件系统位置。servlet 容器可以选择直接从 .war 文件执行它而不扩展它,或者它可以从根本不受传统文件系统支持的 URL 读取应用程序代码。

在您的情况下,您返回的漫长路径正是 Eclipse 部署您的应用程序的位置。该路径在该上下文中是 100% 正确的,因为如果您查看该位置的文件系统,您会找到您的应用程序的副本,但显然不是您所期望的。

通常,不可能可移植地引用相对于您的应用程序的任何文件路径,因为该路径可能不存在。

于 2013-03-25T00:34:08.930 回答
0

Tomcat 目录 (tomcat/bin) 的路径:

File inputFile = new File("file.xml"); // tomcat_dir/bin/file.xml

其他 Tomcat 目录的路径,例如“webapps”:

File inputFile = new File("../webapps/file.xml"); // tomcat_dir/webapps/file.xml

摆脱绝对路径的好方法:)

于 2016-08-19T07:44:20.387 回答