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%
,可以从你拥有的任何脚本中使用