java.util.prefs.Preferences用法(转)
我们经常需要将我们的程序中的设定,如窗口位置,开启过的文件,用户的选项设定等数据记录下来,以做便用户下一次开启程序能继续使用这些数据。
以前我们通常的做法是使用Properties类,它提供以下方法:
void load(InputStream inStream)
void store(OutputStream out, String header)
String getProperty(String key, String defaultValue)
String getProperty(String key)
这些方法让我们很容易的存取设定数据.
另外的办法是使用ResourceBundle这个类来储存设定数据,甚至有些程序作者使用一个自定结构的文件来储存设定数据。
但不管怎样,最让程序作者头痛的是:我该将这些数据保存在哪?
现在好了,JDK1.4为我们提供的java.util.prefs包,里面有一个Preferences类,能让以上的工作变得极其轻松!
写VB程序的人常常用SaveSetting函数和getSettging来存取注册表中的用户设定数据。而Java的Preferences类也提供了类似的机制。
Preferences类在不同的平台中有不同的实现方式。而在Windows平台中,Preferences是将数据保存在注册表中的,而在其它平台中的实现我就不得而知了(我对Linux等系统都不太了解).
但不管怎样,都是通过相同的接口来使用的,程序作者可以不管实现细节。
建立Preferences对象
为了区分不同的应用程序的参数项,在建立Preferences时要指定一个节点路径。
Preferences是一个抽象类,提供了一系列静态方法和抽象方法来操作参数项:
抽象方法:
Preferences userData = Preferences.userNodeForPackage(this);
Preferences sysData = Preferences.systemNodeForPackage(this);
这两个方法是从指定的物件所在的包(package)返回一个节点路径,如this是javax.swing.JComponent,则返回/javax/swing
静态方法:
Preferences userData = Preferences.userRoot().node("/com/sunway/spc");
Preferences sysData = Preferences.systemRoot().node("/com/sunway/spc");
以上每种方式提供了两套操作方法。其中一套是用户参数项,另一套是系统参数项。
在Windows平台中,用户参数项在注册表中的根节点是
HKEY_CURRENT_USER\Software\JavaSoft\Prefs
系统参数项在注册表中的根节点是
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Prefs
而我们指定的节点路径是位于这些根节点之下的.
如何读写数据
Preferences提供了多种类型数据的读写方法。
先来看写(put)的方法,
put(String key, String value)
putBoolean(String key, boolean value)
putByteArray(String key, byte value[])
putDouble(String key, double value)
putFloat(String key, float value)
putInt(String key, int value)
putLong(String key, long value)
下面的是读(get)的方法,
get(String key, String default)
getBoolean(String key, boolean default)
getByteArray(String key, byte default[])
getDouble(String key, double default)
getFloat(String key, float default)
getInt(String key, int default)
getLong(String key, long default)
注意,每一种get方法的第二个参数需要我们为它指定缺省的参数。
除了以上方式之外,Preferences还允许我们将它的数据导出到一个XML文件保存,
void exportNode(OutputStream os)
void exportSubtree(OutputStream os)
我们可以导出一个节点,或是导出整个子节点树.
Preferences的一个演示
以上的讲解足可以写一个示例来看看Preferences是如何为我们工作的,看看下面的例子:
import java.io.*;
import java.util.prefs.*;
public class PrefsDemo {
public static void main(String args[])
{
String keys[] =
{"sunway","copyright","author"};
String values[] =
{"sunway technology company","copyright 2002","turbochen@163.com"};
/* 建立一个位于user root下的/com/sunway/spc节点参数项*/
Preferences prefsdemo =
Preferences.userRoot().node("/com/sunway/spc");
/* 储存参数项*/
for (int i=0 ; i < keys.length; i++)
{
prefsdemo.put(keys[i], values[i]);
}
/* 导出到XML文件 */
try
{
FileOutputStream fos = new FileOutputStream("prefsdemo.xml");
prefsdemo.exportNode(fos);
} catch (Exception e)
{
System.err.println("Cannot export nodes: " + e);
}
/* 去掉注释可以清除注册表中的参数项*/
/* try
{
prefsdemo.removeNode();
} catch (BackingStoreException e)
{
} */
}
}
以上介绍了Preferences功能,要了解更多Preferences的方法,请查阅JDK文档java.util.prefs.Preferences
.
分享到:
相关推荐
在Java编程中,Preferences类提供了一种方便的方式来存储和检索用户或系统级别的配置信息,它类似于Windows中的注册表和Unix/Linux中的配置文件。这个API设计为安全、简单且跨平台,使得开发者无需直接操作底层的...
许多应用程序和服务都使用注册表来存储其配置数据。对于Java开发者来说,在某些场景下,可能需要读取或修改Windows注册表中的数据。本文将探讨Java中读写注册表的两种方式:Preferences API和jRegistry工具。 首先...
在Java编程环境中,有时我们需要对Windows系统的注册表进行读写操作,这在处理特定的系统配置或应用程序设置时尤其有用。Java从JDK 1.4版本开始引入了一个名为`Preferences`的类,该类提供了方便的方式来管理和操作...
Windows注册表是Windows操作系统的核心组件之一,用于存储系统和应用程序设置的关键信息。本文将从Java操作Windows注册表的基础出发,深入探讨其应用场景、实现方式以及潜在的挑战,旨在为读者提供一个全面而实用的...
在IT领域,尤其是在Java开发中,对注册表的修改是一项重要的技能,特别是在处理与操作系统集成的应用程序时。本文将深入探讨“java注册表修改”的核心概念、代码示例及其应用场景,帮助开发者更好地理解和掌握这一...
Preferences通常用于保存应用程序中的键值对,类似于桌面操作系统的注册表或配置文件。这篇内容我们将深入探讨Android中的Preferences数据存储。 一、Preferences的类型 Preferences主要分为两种类型:...
本文档探讨了使用Java编程语言来修改Windows注册表的不同方法及其应用场景。 #### 方法一:利用`java.util.prefs.Preferences` 1. **原理**: - `java.util.prefs.Preferences`是JDK内建的功能之一,主要用于存储...
注册表是Windows操作系统中一个重要的数据库,用于存储系统和应用程序的配置信息。它包含了系统运行所需的各种参数,包括硬件配置、用户设置、应用程序配置等。对于软件开发者而言,理解和操作注册表是至关重要的...
- 限制性强:只能修改与Java应用程序相关的注册表键值,无法直接编辑任意位置的注册表项。 - 保存位置固定:对于系统级的偏好设置,将被保存在`HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Prefs`路径下;用户级别的...
在开发涉及系统级配置的应用时,常常需要对Windows注册表进行操作。Java作为一种跨平台的语言,提供了多种方式来实现这一需求。本文将详细介绍使用Java操作Windows注册表的三种常见方法,并分析各自的优缺点。 ####...
应用程序可以通过Preferences类提供的方法来读取和写入注册表,例如使用put(String key, String value)来存储字符串值,使用putInt(String key, int value)和putDouble(String key, double value)等方法来存储其他...
注册表是Windows操作系统的核心组成部分之一,它包含了系统在运行过程中不断引用的各种信息,如用户配置文件、已安装的应用程序及其文档类型、文件夹和图标属性设置等。随着Windows的发展,注册表逐渐取代了早期的...
在Windows系统中,`Preferences` API使用注册表来保存信息,而在Unix/Linux系统中,信息通常存储在用户的家目录下的一个隐藏文件中。这样保证了用户特定的设置不会影响其他用户,同时也使得应用程序能在用户的不同...
如设置程序安装后的输出文件夹,安装程序的图标,应用程序的名称及版本,安装程序语言及密码,安装弹出的对话框及快捷方式,添加到注册表项及可执行卸载程序等,支持创建安装程序解压缩器。可创建安装脚本及卸载脚本...
7.1 组策略首选项(Group Policy Preferences, GPP):提供更多的配置选项,如文件映射、注册表设置等,且不依赖于组策略引擎。 7.2 组策略驱动程序更新:可控制驱动程序的自动安装和更新,确保系统稳定。 8. 组...
5. **组策略首选项(Group Policy Preferences,GPP)**:这是Windows Vista及更高版本引入的一项功能,允许管理员设置非安全的配置项,如文件、注册表项和脚本,而这些不会覆盖现有设置。 6. **组策略结果集...
"UninstallTool"是一款高效的绿色卸载工具,其主要功能在于帮助用户彻底卸载计算机上的应用程序,并在卸载过程中清理与之相关的注册表残留。这一特性对于保持系统整洁和优化性能至关重要,因为常规的卸载程序往往...
通过对比软件安装前后的注册表快照,可以找出应用设置对应的注册表值。 5. **Printers** 自动连接到最近的打印机可以提高用户体验。GPP中的打印机设置允许你根据计算机的位置(如子网)自动连接打印机。这样,当...
SharedPreferences sharedPreferences = getSharedPreferences("MyPreferences", MODE_PRIVATE); ``` 2. **编辑与提交** 使用`SharedPreferences.Editor`接口进行数据的写入操作,通过`edit()`方法获取编辑器,...