什么是/ tmp等效的最佳窗口?

时间:2009-08-25 16:44:17

标签: java windows unix

我想改进java应用程序的跨平台行为。但是,它的测试套件目前假定存在/tmp目录。

Windows平台上最佳的等效位置是什么?注:我绝对不想假设用户拥有管理员权限,但我确实希望它至少可以用于XP,Vista和Windows7的。

是否存在有用的环境变量,和/或我可以按优先顺序尝试的一组首选位置?

5 个答案:

答案 0 :(得分:31)

系统属性 java.io.tmpdir 可用于用户的临时目录:

File tmp = new File(System.getProperty("java.io.tmpdir"));

这可能优先于File.createTempFile(在任何情况下,在发动机罩下使用tmpdir系统属性),在您要搜索的实例中文件(例如,来自先前调用应用程序的缓存数据,听起来可能就是您的问题)。

您可以通过在命令行上提供运行时覆盖来更改系统属性的值(JVM参数):-Djava.io.tmpdir=C:\foo\bar

注意:使用相关的File构造函数可以避免"trailing slash" issue descibed in the comments to seth's answer below

String fileName = "foobar.txt"
String tmpPath = System.getProperty("java.io.tmpdir");
File tmpFile;
tmpFile = new File(tmpPath + File.separator + fileName); //possible problem
tmpFile = new File(new File(tmpPath), fileName); //OK!

显然,Windows还有一个DOS环境变量 %TEMP% ,可以从您拥有的任何脚本中使用

答案 1 :(得分:8)

为什么不使用java.io.File.createTempFile()

答案 2 :(得分:2)

Windows定义环境变量TEMP和TMP,它们都提供当前用户的临时文件夹。

答案 3 :(得分:0)

使用File.createTempFile("myPrefix","mySuffix")

答案 4 :(得分:0)

如果您想坚持做一些特定于Windows的事情,可以使用%temp%环境变量。