当使用用户'LocalService'将Java应用程序作为服务运行时,临时目录(“java.io.tmpdir”)指向'c:/ windows / temp'(例如)。
运行Java应用程序通常会提供'c:/ documents and settings / user / local settings / temp'。
当我的应用程序正常运行时,如何确定用户独立的临时文件夹'c:/ windows / temp'?
谢谢和问候, GHAD
答案 0 :(得分:1)
我不确定是否有“干净”的方法。
在这种情况下,我可能会专门为Java应用程序创建一个目录,并在属性文件中引用它。
答案 1 :(得分:1)
你可以:
或使用JVM的命令行参数将此值作为变量传递给您的应用程序,例如
-Dmytempdir=%WINDIR%\temp
如您所述,用户可以更改其中任何一个的值 使用System的变量 - >环境变量,但我认为它们对系统没有任何影响,直到重新启动(...?)。
或者...
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\TEMP
中。 这可能必须非常混乱,我不知道Preferences类是否可以让您访问您需要阅读的密钥。同样,如果用户真的想要,用户更改注册表值也没什么可做的,但我再次怀疑它会在重启后产生任何影响,并且可能会对您的应用产生影响。
干杯, --j
答案 2 :(得分:0)
Java系统属性java.io.tmpdir只指向系统变量%TMP%。 对于普通用户%TMP%指向%HOMEPATH%\ temp,对于其他帐户 - 可以是另一个路径。 您可以尝试使用%SYSTEMROOT%\ temp而不是java.io.tmpdir - %SYSTEMROOT%指向安装了Windows的目录。
答案 3 :(得分:0)
您只需创建自己的临时文件夹,添加deleteOnExit()方法即可确保在应用程序退出时删除此文件夹。