在tomcat上保存临时文件的最佳实践



我需要演示一个基于xml的数据交换系统。它在学校一台受信任的电脑上离线演示。应用程序稍后将获得数据库,但就本次演示而言,我只需要展示xml文件的布局、打开和保存以及表如何从xml中获取数据。

那么,让web应用临时创建xml文件以便我可以展示这个应用程序的最佳位置是什么?我正在使用Eclipse和Tomcat。

如前所述,安全性根本不是问题,因为这个版本不会在线。此外,如果每次应用程序运行时文件都被擦除,则是ok的。

它们只需要在应用程序运行一次的演示期间存在。所以,我不知道什么是最好的位置,以及如何得到这个位置的路径,而不取决于所使用的计算机。

谢谢。

使用属性java.io.tmpdir获取tomcat临时文件夹并将文件保存在那里。那将是暂时收留他们的好地方。所以你可以这样定义它:

public static final String TMP_DIR = System.getProperty("java.io.tmpdir")

使用指定的属性java.io.tmpdir或使用规范中定义的servlet上下文属性javax.servlet.context.tempdir。对于tomcat,该属性可以通过上下文中的workDir属性来更改。

您可以通过调用servletContext.getAttribute("javax.servlet.context.tempdir")

来使用该属性

老问题,但如果有创建临时文件为什么不使用File.createTempFile函数?

的例子:

File temp = File.createTempFile("real",".howto");
temp.deleteOnExit();

您可以使用此方法根据您的操作系统获取temp文件位置

public static String getSystemFileLocation()
{
    File tmpFile = null;
    String fileLocation="/tmp/";
    if (System.getProperty("os.name").toUpperCase().indexOf("WINDOWS") == 0) {
        tmpFile=new File("c:\temp");
        if(tmpFile.exists()) {
            fileLocation="c:\temp\";
        }
        else {
            tmpFile.mkdir();
            fileLocation="c:\temp\";
        }
    }
    else if (System.getProperty("os.name").toUpperCase().indexOf("WINDOWS") == -1) {
        fileLocation="/tmp/";   
    }
    return fileLocation;
}

最新更新