当我想在Java EE中获得真正的路径时,请使用以下说明:
String rootPath = getServletConfig().getServletContext().getRealPath("/");
System.out.println(rootPath);
结果是: C:\ Users \用户Saad的\桌面\ pds.metadata.plugins \ org.eclipse.wst.server.core \ TMP0 \ wtpwebapps \梅捷\
而且,我必须得到这个结果:
C:\用户\ Saad的\桌面\ PDS \梅捷\
有人可以帮助我吗?
答案 0 :(得分:2)
这是为什么“文件系统路径相对于应用程序”的概念在servlet中没有意义的一个很好的例子。将servlet部署到容器中时,无法保证它位于真实的文件系统位置。 servlet容器可以选择直接从.war文件执行它而不扩展它,或者它可以从一个完全没有传统文件系统支持的URL读取应用程序代码。
在您的情况下,您获得的长路径正是Eclipse部署应用程序的地方。该路径在该上下文中是100%正确的 ,因为如果您查看该位置的文件系统,您将找到应用程序的副本,但显然不是您所期望的。
通常,无法以可移植的方式引用与您的应用程序相关的任何文件路径,因为该路径可能不存在。
答案 1 :(得分:0)
Tomcat dir(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
摆脱绝对路径的好方法:)