【发布时间】:2012-02-07 22:25:53
【问题描述】:
我有一个自己编写的 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 所在的同一文件夹中创建这些文件,而且肯定不在桌面上。
谁能告诉我这里发生了什么?
【问题讨论】:
-
在 Vista 中写入 c:\program 文件需要 UAC 同意,所以我怀疑系统使用桌面作为后备。
-
你认为我有什么办法可以控制回退吗?
-
您仍然可以在 %PROGRAMFILES% 中为核心应用程序库等设置默认的 Java 应用程序安装。但是,与其在任何 Windows 操作系统下的 %PROGRAMFILES% 中的任何位置保存您的 用户/数据配置,不如使用
System.getProperty("user.home")或System.getenv("USERPROFILE")并在其中为您的 java 应用程序创建一个特殊文件夹让用户/应用更容易改变一些东西? -
我认为最困扰我的是安装程序能够将应用程序放在“程序文件”位置,但我的应用程序无法写入同一位置。我知道 Izpack 为其安装程序使用 Windows 本机代码,我想应该对此进行解释,但它仍然使整个过程复杂化。我希望卸载程序能够删除应用程序,并且当 Jar 位于“user.dir”时,在“user.home”位置没有一些文件
标签: java file-io windows-xp windows-vista izpack