无法获取项目文件夹中文件的真实路径

时间:2014-02-17 08:41:15

标签: jsp jstl java-6

在jsp文件中,我正在尝试导航到加载xml文件。 JSP文件的位置是

/projectFolder/layout/applicationName/index.jsp

xml文件的位置

/projectFolder/data/files/myfile.xml

项目文件夹的位置在每个环境中都不同,例如:在我的本地电脑中,位置是:

c:\myApps\BPServer\tomcat\webapps\projectFolder

当我使用以下代码时:

<c:set var="xmlfile" value="${pageContext.request.contextPath}/data/files/myfile.xml"/>

xmlFile的值设置为:

c:\projectFolder\data\files\myfile.xml 

然而奇怪的是,如果我使用xmlfile作为href,那么找到正确的路径和文件:

<jsp:attribute name="rightContent"><a href="${xmlfile}">XML FILE</a></jsp:attribute>

任何想法如何才能获得正确的文件路径以便以下工作:

boolean canLocateFile = fileExists(xmlfile);

    public static boolean fileExists(String filepath)
        {
            File f = new File(filepath);
            return f.exists();
        }

1 个答案:

答案 0 :(得分:1)

您可以从ServletContext获取应用程序的根路径。

如果你有文件的相对路径,你可以使用servletContext.getRealPath()获得它的真实路径。

例如:

String realPath = servletContext.getRealPath("/data/files/myfile.xml");

您还可以使用servletContext.getContextPath()获取应用程序的根路径。然后可以使用根路径来引用您的文件。 例如:

String rootPath = servletContext.getContextPath();
String filePath = rootPath + "/data/files/myfile.xml";

如果您的类中无法访问servletContext,您可以将应用程序的根路径存储在init-param或属性中,并可以使用它。