简单、跨平台的Java桌面路径?
我正在寻找一种简单、跨平台的方法,在JVM上获取用于存储应用程序设置和缓存数据的适当目录。例如,在XDG规范下的Linux上:简单、跨平台的Java桌面路径?,java,settings,desktop,freedesktop.org,Java,Settings,Desktop,Freedesktop.org,我正在寻找一种简单、跨平台的方法,在JVM上获取用于存储应用程序设置和缓存数据的适当目录。例如,在XDG规范下的Linux上: 在~/.config/appname 缓存在~/.cache/appname Windows stuff进入C\Users\user\Application Data或类似的位置(在Win7上);据我推测,Mac电脑将内容置于~/Library/Application设置下 是否有跨平台呼叫以获取这些路径位置?我还没有找到一个,尽管我发现有几个问题在问。是否有一些库
- 在
~/.config/appname
- 缓存在
~/.cache/appname
C\Users\user\Application Data
或类似的位置(在Win7上);据我推测,Mac电脑将内容置于~/Library/Application设置下
是否有跨平台呼叫以获取这些路径位置?我还没有找到一个,尽管我发现有几个问题在问。是否有一些库为大多数常见的桌面平台实现了正确的逻辑
最糟糕的情况是,我只需查找user.home
,然后假装一切都是基于XDG的Linux环境。但是,如果很容易为用户的操作系统获取正确的目录,我愿意这样做。我知道,FileSystemView
类是唯一一个包含对类似这样的常规目录的访问的类,并且是跨平台的。请参阅文档
此类包含一些可能有用的方法,例如gethomeditory()
和getDefaultDirectory()
。此类由JFileChooser
用于Swing接口。我知道它不会直接指向config和cache目录,但对您来说,这可能是朝着正确方向迈出的一步
对于我自己的应用程序,我采取了下一个最好的方法,尝试创建应用程序本身包含的所有配置和设置,即在安装应用程序的目录下创建一个“config”目录。尽管它不是整个操作系统配置的中心位置,但至少它将其保存在java应用程序上下文中。我们基本上建立了一个实用程序类来提供这些信息,主要基于user.home
和OS.name
系统属性
我们有一系列的方法来建立路径位置,比如
SystemUtilities.getApplicationSettingsPath("Name of my awesome app");