java访问特定于平台的应用程序数据区
在Java中,我需要找到一种方法在本地存储一些数据,以便在重启之间可以使用。简单的事情,例如窗口位置/大小。我知道这些信息通常存储在Windows上的C:\Users\<username>\AppData
中(通过在Windows资源管理器的地址栏中键入%APPDATA%
来访问),但我不知道它存储在Mac OS X上的什么位置(顺便说一下,我仍然不了解Windows上的%APPDATA%
文件夹的结构,以及它的\Roaming
、\Local
、\LocalLow
等子文件夹)
当然,根据操作系统的不同,在这些区域中存储诸如窗口位置之类的信息是有办法的。也许甚至有一个图书馆已经为完成这些相对普遍的任务而预先构建好了
# 1 楼答案
您可以将数据存储在
或者类似的东西。这应该适用于操作系统
# 2 楼答案
我认为Preferences API符合这一要求。简言之:
有一个简短但有用的教程here。下面是一个基于您需求的小示例:
如果您第一次运行它,您将在console中看到首选项默认值:
如果再次运行,则会更新这些值。就我而言:
编辑
根据下面的@Puce注释,Windows上的数据存储在注册表中,这是有意义的,因为这是Windows用于存储用户/系统/软件数据的方式。您可以在
HKEY_CURRENT_USER\JavaSoft\Prefs\[package\class name]
下找到示例中生成的注册表项,如下图所示:注意:在Windows 8 x64、JDK 1.7上测试
如果您不想用这些首选项填充注册表,那么您可以只存储应用程序文件夹的路径(与其他应用程序一样),并使用此路径从普通属性文件加载配置数据。继续使用首选项(至少用于存储应用程序的路径)的主要优点是,检索/存储配置数据的机制设计为跨平台的,JVM实现者(而不是开发人员)必须处理实际的实现
# 3 楼答案
抱歉,在标准Java库中没有解决方案
您可能需要找到第三方库来实现这一点,或者使用其他解决方案(请参阅其他答案)