Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正在保存用户设置/数据库/缓存。。。在Java中(在每个操作系统上)_Java_Operating System_Settings_Configuration Files - Fatal编程技术网

正在保存用户设置/数据库/缓存。。。在Java中(在每个操作系统上)

正在保存用户设置/数据库/缓存。。。在Java中(在每个操作系统上),java,operating-system,settings,configuration-files,Java,Operating System,Settings,Configuration Files,我的Java应用程序正在“user.home”中保存内容,但在windows上,这似乎不是保存应用程序信息的正确路径(正如一位朋友告诉我的)。另一个选项是使用preferences api,但无法使用preferences api设置hsqldb位置。另外,我希望所有文件都在同一个文件夹中可用(本地数据库、配置、缓存等) 我正在寻找一些示例代码或框架来处理特定于操作系统的内容。Windows应用程序在user.home中保存数据是不寻常的,但不是“错误的”。Windows应用程序喜欢将它们的数据

我的Java应用程序正在“user.home”中保存内容,但在windows上,这似乎不是保存应用程序信息的正确路径(正如一位朋友告诉我的)。另一个选项是使用preferences api,但无法使用preferences api设置hsqldb位置。另外,我希望所有文件都在同一个文件夹中可用(本地数据库、配置、缓存等)


我正在寻找一些示例代码或框架来处理特定于操作系统的内容。

Windows应用程序在user.home中保存数据是不寻常的,但不是“错误的”。Windows应用程序喜欢将它们的数据散布到各处(一点在注册表中,一点在应用程序的安装目录中,一点在Windows目录中,一点在System32中,一点在这里,一点在那里)。最后,这使得不可能干净地备份或删除导致著名的“Windows腐烂”的东西(即,你必须每隔几个月重新安装一次)

无论如何。如果您真的不想使用user.home(我认为没有理由不使用),请使用类似这样的代码来确定您是否在Windows上运行。如果结果为真,则弹出一个目录选择对话框,用户可以在其中指定要保存数据的位置


将此信息保存在首选项中,并在下次启动应用程序时使用此路径。这样,用户可以指定他们想要数据的位置,而您只需在prefs中留下一点信息。

对于应用程序“foo”,我将在user.home中创建一个名为“.foo”的目录。对于Windows来说,它看起来有点奇怪,但几乎没有人会在该目录中查找(不管怎么说,它充满了模糊的目录)和Linux/Solaris/。。。这将导致一个隐藏的目录,不会在视觉上扰乱用户的主目录。

问题不在于Wiindows,而在于标准java设置

长谈 http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4787931>这里

我建议在命令行上的'-D MYLOC=%USERPROFILE%'属性中选择此选项


请注意,如果用户进行了桌面登录,您将只获得“USERPROFILE”,如果用户使用citrix或类似软件远程登录,或通过ssh远程登录,则不会设置此配置文件。此外,如果将桌面与此设置混在一起,则可能会将其设置为不可用的设置

在我的WinXP Pro SP3系统上,user.home指向
C:\Documents and settings\
许多应用程序只是将其数据存储在那里(而不是此路径+应用程序数据,但其他一些应用程序会存储在那里),以Unix样式创建一个目录,即点+应用程序名(例如:.antexplorer、.sqlworkbench、.squirrel-sql、.SunDownloadManager、.p4qt、.gimp-2.4等)

看起来是个不错的常规做法…

动态读取(从代码中)APPDATA环境变量的值,并将配置文件存储在
%APPDATA%\\.myapp\config


==>值取决于平台,不要使用任何硬编码路径,始终读取环境。var.

很多应用程序都能做到这一点,洋泾浜等等