用户工作目录:XP vs Vista

时间:2012-01-11 14:58:08

标签: java file-io windows-xp windows-vista izpack

我有一个我写过的Java桌面应用程序。 在执行期间,我使用系统中定义的默认路径名创建文件夹和文件。

Java.io.files明确指出:By default the classes in the java.io package always resolve relative pathnames against the current user directory. This directory is named by the system property user.dir, and is typically the directory in which the Java virtual machine was invoked.

此外,我正在使用IzPack来启用安装和快捷方式创建。

当我在我的XP计算机上运行我的应用程序时,在安装后我得到一个桌面快捷方式,并且所提到的文件和文件夹创建位于Izpack安装Jar的位置。这是预期的行为。

但是当我在Vista机器上测试时,文件夹和文件都在桌面上创建!即使Jar位于正确的位置(c:\ program files ...等)。

我希望这些文件是在Jar所在的同一个文件夹中创建的,而且肯定不是在桌面上。

有人能给我任何关于这里发生的事情的见解吗?

1 个答案:

答案 0 :(得分:1)

这是因为在Vista / Seven中,写入Program Files文件夹需要管理干扰,因此JVM会寻找下一个可写位置作为后备:桌面(或用户文档目录)。但是,您可以在所有操作系统上以统一的方式轻松确定用户主目录,这比让JVM选择 - 希望 - 合理的位置更好。

由于这是Windows上JVM的known bug,如果这没有用,那么回退就是检查系统环境变量 USERPROFILE ,它应指向正确的用户主文件夹:

String userHome = System.getenv("USERPROFILE");