在tomcat上保存临时文件的最佳实践? [复制]
Posted
技术标签:
【中文标题】在tomcat上保存临时文件的最佳实践? [复制]【英文标题】:Best practice to save temp files on tomcat? [duplicate] 【发布时间】:2014-07-09 15:34:30 【问题描述】:我需要演示一个基于 xml 的数据交换系统。它在学校的受信任计算机上离线演示。应用程序稍后会获取数据库,但为了这个演示,我只需要展示 xml 文件的布局、打开和保存以及表如何从 xml 中获取数据。
那么,让 Web 应用程序临时创建 xml 文件以便我展示这个应用程序的最佳位置是什么?我正在使用 Eclipse 和 Tomcat。
如上所述,安全性根本不是问题,因为此版本不会上线。此外,如果每次运行应用程序时都会删除文件,也可以。
它们只需要在应用程序运行一次的演示文稿期间存在。所以,我不知道什么是最佳位置以及如何获取到该位置的路径,而不取决于所使用的计算机。
谢谢。
【问题讨论】:
见***.com/questions/617414/… 如果文件被删除没问题,而且大概是演示,不会有很多文件,为什么不把它们保存在地图或类似的东西的内存中? 您可以使用属性java.io.tmpdir
获取tmp 位置并将您的文件保存在那里。
java.io.tmpdir 所指向的 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中的临时文件夹,但你的代码是在操作系统级别获取临时文件夹以上是关于在tomcat上保存临时文件的最佳实践? [复制]的主要内容,如果未能解决你的问题,请参考以下文章