Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Tomcat中创建文件的路径_Java_Xml_File_Tomcat_Path - Fatal编程技术网

Java 在Tomcat中创建文件的路径

Java 在Tomcat中创建文件的路径,java,xml,file,tomcat,path,Java,Xml,File,Tomcat,Path,我创建了一个xml格式的网站设置文件,该文件的内容指定了网站标题、url、元描述、管理电子邮件等内容 在我的Java代码中,我简单地将文件定义如下: private static final String webSettingFileName = "WebSettings.xml"; public void saveSetting() { File settingFile = new File(webSettingFileName); // try-catch block to

我创建了一个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设置xml文件已写入Tomcat bin文件夹,但是,我希望将该文件写入Tomcat中webapps的根文件夹中。所以我想知道如何在代码中指定文件路径。谢谢

编辑:

贾罗德·罗伯森因为重复的问题给了我一个红色-1。我不同意他的观点,因为我在写这篇文章之前已经检查过这篇文章了。我尝试了中建议的方法,但它对我不起作用,因为无论Tomcat重新启动多少次,我都需要将web设置文件永久保存在同一位置(因此Tomcat/webapps符合我的目的!)。该文件用于保存网站设置。此外,ServletContext在我用于webapp的Java1.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); 

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

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

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

您是否尝试为其提供绝对路径?这两种方法都不是好主意。您应该在应用程序的WAR文件中包含该文件,而不是Tomcat根目录。是的,在WAR文件中编写该文件是一个更好的主意,但不确定如何执行。我应该在代码中放置类似{Context}/webSettingFileName的内容吗?