【问题标题】:Best practice to save temp files on tomcat? [duplicate]在tomcat上保存临时文件的最佳实践? [复制]
【发布时间】:2014-07-09 15:34:30
【问题描述】:

我需要演示一个基于 xml 的数据交换系统。它在学校的受信任计算机上离线演示。应用程序稍后会获取数据库,但为了这个演示,我只需要展示 xml 文件的布局、打开和保存以及表如何从 xml 中获取数据。

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

如上所述,安全性根本不是问题,因为此版本不会上线。此外,如果每次运行应用程序时都会删除文件,也可以。

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

谢谢。

【问题讨论】:

  • 如果文件被删除没问题,而且大概是演示,不会有很多文件,为什么不把它们保存在地图或类似的东西的内存中?
  • 您可以使用属性java.io.tmpdir 获取tmp 位置并将您的文件保存在那里。
  • java.io.tmpdir 所指向的 tomcat/temp 怎么样

标签: java xml eclipse tomcat temp


【解决方案1】:

使用属性java.io.tmpdir 获取tomcat 临时文件夹并将您的文件保存在那里。那将是暂时存放它们的好地方。因此您可以将其定义如下:

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

【讨论】:

    【解决方案2】:

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

    您可以通过调用 servletContext.getAttribute("javax.servlet.context.tempdir") 来使用该属性

    See tomcat documentation for detail.

    【讨论】:

      【解决方案3】:

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

      例子:

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

      【讨论】:

        【解决方案4】:

        您可以使用此方法根据您的操作系统获取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;
        }
        

        【讨论】:

        • 消极而危险的方式...
        • 这个问题是关于tomcat中的临时文件夹,但你的代码是在操作系统级别获取临时文件夹
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-12-30
        • 2019-02-27
        • 1970-01-01
        • 2023-03-13
        • 2018-10-28
        • 2018-01-21
        • 1970-01-01
        相关资源
        最近更新 更多