Java 如何在OS X中保存应用程序数据以供跨用户使用

Java 如何在OS X中保存应用程序数据以供跨用户使用,java,macos,sqlite,Java,Macos,Sqlite,我有一个Mac Java应用程序,需要在重新启动时保存数据。需要保存数据,以便任何用户都可以访问它。例如,可供所有用户使用的SQLite数据库文件 看起来应该使用/Library/Application Support/文件夹来完成此操作,但如果不让我的应用程序以root用户身份运行或将文件的权限更改为rwxrwx,我将无法写入它 在Mac上保存应用程序级数据的正确方法是什么?开发人员文档介绍了这一点,这是一个很大的主题: 根据,您应该在/Library/Application\Supp

我有一个Mac Java应用程序,需要在重新启动时保存数据。需要保存数据,以便任何用户都可以访问它。例如,可供所有用户使用的SQLite数据库文件

看起来应该使用/Library/Application Support/文件夹来完成此操作,但如果不让我的应用程序以root用户身份运行或将文件的权限更改为rwxrwx,我将无法写入它


在Mac上保存应用程序级数据的正确方法是什么?

开发人员文档介绍了这一点,这是一个很大的主题:

根据,您应该在
/Library/Application\Support
中为应用程序创建一个特定的子目录,以存储系统上所有用户通用的应用程序数据。我会使用com.yourcompany.yourapp或其他不太可能与另一个应用程序使用公共目录发生冲突的应用程序


您还可以考虑使用现有的OS X应用程序捆绑包,例如,而不是文件位置的硬代码路径。

选择一个本地文件-创建一个隐藏目录,并将应用程序数据塞入其中。我认为这个问题更适合@Barranka代码级别的问题。如果两个问题不同,会发生什么用户为同一件事保存不同的值?两个用户不会同时运行应用程序,因此没有争用的风险。这更像是一个公共属性文件或数据库。为了清晰起见,我添加了SQLite数据库的示例。如果没有根权限,应用程序无法写入
/Library/Application\Support/com.mydomain.myapp/myfile.db
中的文件,或者我使
com.mydomain.myapp
中的所有内容都是可写的。@BHarman/Library中的权限与/Applications中的权限一样对用户有害-您需要安装程序升级权限,并为您的设计设置适当的权限。因此,在/Library中设置具有完全写访问权限的内容没有问题?@BHarman这是非常规的,但java并不是OSX上的典型语言。现在大多数应用程序都以签名/沙盒应用程序的形式运行,并具有适当的权限来描述它们在文件系统上读写的位置。请参阅下面这篇关于容器化java应用程序并使其防沙箱的文章。它适用于更典型的用户专用数据存储,但应该可以帮助您决定如何前进。