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

Ale*_*ard 14 java unix windows

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

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

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

oxb*_*kes 31

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

File tmp = new File(System.getProperty("java.io.tmpdir"));
Run Code Online (Sandbox Code Playgroud)

在您要搜索临时文件的实例中(例如,来自先前调用应用程序的缓存数据,这听起来像是可能的),这可能优先于File.createTempFile(在任何情况下,使用tmpdir引擎盖下的系统属性)从你的问题来看).

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

注:"斜线"问题的意见descibed到赛斯的回答以下可以通过使用相关的避免File构造函数:

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!
Run Code Online (Sandbox Code Playgroud)

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