在运行时在Java Web项目的WebContent内保存文件

我正在尝试生成XML文件并将其保存在中/WEB-INF/pages/

下面是我的代码,它使用相对路径:

File folder = new File("src/main/webapp/WEB-INF/pages/");

StreamResult result = new StreamResult(new File(folder, fileName));

在本地计算机上作为应用程序运行时运行正常

(C:\Users\userName\Desktop\Source\MyProject\src\main\webapp\WEB-INF\pages\myFile.xml).

但是在服务器计算机上部署和运行时,它会引发以下异常:

javax.xml.transform.TransformerException:java.io.FileNotFoundException C:\

project \ eclipse-jee-luna-R-win32-x86_64 \ eclipse \ src \ main \ webapp \

WEB INF \ pages \ myFile.xml

我也尝试getServletContext().getRealPath()过,但是它正在null服务器上返回。有人可以帮忙吗?

回答:

在Java EE Web应用程序(例如)中使用相对本地磁盘文件系统路径new

File("filename.xml")

getRealPath()其用于获取写入文件的位置。

始终将它们写到预定义绝对路径上的外部文件夹中。

  • 硬编码:

    File folder = new File("/absolute/path/to/web/files");

    File result = new File(folder, “filename.xml”);

    // …

  • 或以多种方式之一进行配置:

    File folder = new File(System.getProperty("xml.location"));

    File result = new File(folder, “filename.xml”);

    // …

  • 或利用容器管理的temp文件夹:

    File folder = (File) getServletContext().getAttribute(ServletContext.TEMPDIR);

    File result = new File(folder, “filename.xml”);

    // …

  • 或利用OS管理的临时文件夹:

    File result = File.createTempFile("filename-", ".xml");

    // …

替代方法是使用(嵌入式)数据库。

以上是 在运行时在Java Web项目的WebContent内保存文件 的全部内容, 来源链接: utcz.com/qa/428302.html

回到顶部