【问题标题】:Path for creating a file in TomcatTomcat中创建文件的路径
【发布时间】:2014-08-28 06:50:55
【问题描述】:

我创建了一个 xml 格式的网站设置文件,该文件的内容指定了网站标题、url、元描述、管理员电子邮件等内容。

在我的 Java 代码中,我简单地将文件定义如下:

private static final String webSettingFileName = "WebSettings.xml";

public void saveSetting()
{
    File settingFile = new File(webSettingFileName);
    // try-catch block to write the XML file omitted
}

部署war文件后,发现web Setting xml文件被写入了Tomcat的bin文件夹,但是我想将文件写入Tomcat中webapps的ROOT文件夹中。所以我想知道如何在我的代码中指定文件路径。谢谢

编辑:

由于 Jarrod Roberson 给了我一个红色的 -1 重复问题。我不同意他的观点,因为我在发这个帖子之前已经检查了这个帖子。我尝试了that post here 中建议的方法,但它对我不起作用,因为无论 Tomcat 重启多少次,我都需要将 Web 设置文件永久保存在同一位置(所以 tomcat/webapps 符合我的目的!) .该文件用于保存网站设置。此外,ServletContext 似乎在我用于我的 web 应用程序的 Java 1.8 中不起作用。

编辑 2:

这就是我最终实现它的方式:

private final static File catalinaBase = new File(System.getProperty("catalina.base")).getAbsoluteFile();
private static final String webSettingFileName = "WebSetting.xml"; 
private final static File file = new File(catalinaBase, "webapps/" + webSettingFileName); 

【问题讨论】:

  • 你试过给它一个绝对路径吗?
  • 这两个都不是好主意。您应该在应用程序的 WAR 文件中包含它,而不是 Tomcat ROOT。
  • 是的,将文件写入 WAR 文件是一个更好的主意,但不知道该怎么做。我应该在代码中放置类似 {Context}/webSettingFileName 的东西吗?

标签: java xml file tomcat path


【解决方案1】:

您可以使用ServletContext.getRealPath("/")方法获取当前webapp的绝对文件系统路径,例如:

File settingFile = new File(getServletContext().getRealPath("/"), webSettingFileName);

请注意,这仅适用于已分解(解压缩)的 war 文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    • 1970-01-01
    • 1970-01-01
    • 2012-03-25
    • 1970-01-01
    • 2019-05-17
    • 1970-01-01
    相关资源
    最近更新 更多