当前位置: 首页 > 面试题库 >

Java-设置首选项后备目录

翟鸿振
2023-03-14
问题内容

我需要在Java应用程序中创建一个持久性存储,以便所有用户都可以访问它。因此,我正在研究Windows,java.util.prefs.PreferencessystemRoot()在Windows上使用它时效果很好,可以将数据保存在Register中。但是我真的在Linux(Ubuntu)上遇到了一些问题。我想使用我们其他应用程序已经使用的目录:/
usr / share /。因此,我试图systemRoot在运行时将默认目录重定向到/ usr / share。这是我的代码:

System.setProperty("java -Djava.util.prefs.systemRoot", "/usr/share/myfolder");
Preferences pref = Preferences.systemRoot().node("/usr/share/myfolder");

根据此站点,我必须.systemPrefs在执行此命令行及其systemRoot()使用的隐式命令行之前创建文件夹。

执行程序时,出现以下警告: java.util.prefs.FileSystemPreferences syncWorld WARNING Couldn't flush system prefs: java.util.prefs.BackingStoreException: /etc/.java/.systemPrefs/usr create failed.

所以我以为那System.setProperty是行不通的。有什么建议吗?提前致谢!


问题答案:

在Linux系统中,“ 系统” 根首选项节点位于下方/etc。这是由于历史原因,并且是Linux Standard
Base规范的标准。任何非系统首选项都可以进入其他位置,但是将系统首选项转到其他位置违反了操作系统的设计。

奇怪的是,您的定义在Linux系统中无效,因为它无法从/ etc开始。显然,在您决定重新建立首选项根的基础上,Java代码中的某些内容符合操作系统的规范。

通常,此类文件通过不可全局(甚至大多数用户)可写性来防止修改。这意味着,对于要访问首选项的用户,他们应该进入

 Preferences.userRoot()

它将把它们放置在主目录附近的隐藏目录中(它们将具有修改权限)。

如果您希望任何用户阅读其他用户的首选项(描述听起来可能像您一样),那么您将需要具有以足够授权的用户身份运行(通常为root)的安装程序,以在其下创建所需的目录/etc并将其权限更改为世界可写的。

通常,/
etc下的文件不可在世界范围内写入,因为用户可以更改其他用户的设置,并且被认为是违反用户预期环境的一种安全类型。例如,一个粗心的员工(或心怀不满的员工)可以一击就抹去所有其他用户的偏好。



 类似资料:
  • 关于首选项 首选项是关于您希望 Illustrator 如何工作的选项,包括显示、工具、标尺单位和导出信息。您的首选项存储在名为 “AIPrefs”(Windows) 或 “Adobe Illustrator Prefs”(Mac OS) 的文件中,每次您启动 Illustrator 时它也随之启动。要恢复 Illustrator 的默认设置,您可以删除或重命名首选项文件并重新启动 Illustr

  • 我是Android编程的新手,首先我想用SharedPreays做一个简单的选项菜单演示。我已经创建了基本的结构,但是我不知道如何将OnPreancceClickListener附加到Preation。尽管如此,我可以使用onSharedPreancceChanged方法,但是没有其他事件侦听器。(再次,我是初学者,所以我不知道为什么会这样。) 我已经阅读了有关创建菜单步骤的文档:https://

  • 以下各节介绍“首选项”对话框和可以使用此菜单执行的各种任务。 “首选项”对话框 要打开“首选项”对话框,请转到: “编辑”>“首选项”> [类别名称] (Windows) After Effects >“首选项”> [类别名称] (Mac OS) 使用以下键盘快捷键打开“首选项”>“常规”菜单: Ctrl+Alt+;(分号)(Windows) Command+Option+;(分号)(Mac OS

  • 关于首选项 为了让 Illustrator 根据您特定的工作流程尽可能流畅地运行,您需要根据自己的喜好设置首选项。 许多程序设置都存储在 Adobe Illustrator Prefs 文件中,其中包括常规显示选项、文件存储选项、性能选项、文字选项以及增效工具和暂存盘选项。其中大多数选项都是在首选项对话框中设置的。每次退出应用程序时都会存储首选项设置。 如果出现异常现象,可能是因为首选项已损坏。如

  • 25 设备选项 libavdevice库提供类似libavformat的接口,即一个输入设备被认为类似一个分离器活着输出设备类似一个混合器。这些接口也类似libavformat一样提供一些常规设备选项。(参考ffmepeg 格式手册)。 当然,一些输入或者输出设备还提供一些私有的选项,它们只在特定的组件中有效。 可以做ffmpeg命令行中采用-option value来设定某个选项点,或者通过li