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

2022-09-03 04:04:34

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

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

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


答案 1

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

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

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

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

注意:通过使用相关的构造函数,可以避免在下面对seth的答案的评论中描述的“尾随斜杠”问题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!

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


答案 2

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


推荐