- 浏览: 697716 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
yzs5273:
没什么用。都试过了
WIN7下CS不能全屏的解决方法 -
di1984HIT:
不错,学习了
读取本地计算机中的安装程序列表 -
ffedu:
[flash=200,200][url][img][list] ...
linux/unix中如何用find命令详解,非常详细的介绍,比man find强100倍(转) -
lintghi:
...
Log4j使用相对路径指定log文件及使用总结 -
nick.s.ni:
唉,Java中引用的包没有介绍啊,如果数据库用UTF-8的格式 ...
Oracle 中Java 对象与PL/SQL类型的映射及使用(转)
Preferences API在底层到底使用的存储机制,依赖于具体情况。Preferences API允许不同的存储层次来存储原始数据,称为辅助存储器。为Preference节点提供的缺省的后台存储依赖于运行代码的系统:对于MS Windows,缺省的后台存储是注册表
example:
(下面注释掉的那段代码给恢复, 就能把写入的注册键值删除, 很方便啊)
至于读注册表项, 比写还方便, 查JDK API文档吧..
// PrefsDemo.java
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, values);
}
/* 导出到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来管理首选项数据
来自http://java.csdn.net/page/41f5be4f-5a81-4cea-bbdb-4789a1226012
从JDK 1.4开始,提供了新的java.util.prefs.Preferences(及其相关的)类,它能够为保存首选项数据提供一个不错的解决方案。
使用Preferences API非常直观,如下面代码所示:
//All Preferences classes come from java.util.prefs
//Read a configuration value
Preferences prefs = Preferences.systemNodeForPackage(this.getClass());
String url = prefs.get("databaseURL", "");
Preferences API会区分系统数据和用户数据。系统首选项数据作用在整个机器范围内,通常存储的典型信息可能包括应用程序的安装配置等数据,并由所有用户共享。而用户首选项数据则针对每个用户,并随当前用户的不同而改变,通常存储的典型信息可能包括特定应用程序的字体选择、颜色选择和首选窗口的位置及大小等。
Preferences以层次节点的方式组织,类似于XML Infoset元素。通过把节点放入不同层次的包中,首选项元素可以被划分成不同的可管理块,以便于进行管理。Preferences API具有一些工具方法,可以遍历Preferences树以查找与类的包名匹配的Preferences节点。一旦发现了正确的Preferences节点,就能够得到与键“databaseURL”关联的值;如果没有发现这个键,就会返回缺省值,这个值将作为方法调用的第二个参数被返回,其目的是,为了保证内部存储不可用时,应用程序也可以正常运行。
Preferences API在底层到底使用的存储机制,依赖于具体情况。Preferences API允许不同的存储层次来存储原始数据,称为辅助存储器。为Preference节点提供的缺省的后台存储依赖于运行代码的系统:对于MS Windows,缺省的后台存储是注册表;在UNIX 系统中,大部分Java 虚拟机依然使用文本文件,存储在用户的本地目录或整个机器的/etc 或/user/etc目录,这取决于该系统的Java 虚拟机和UNIX 文件系统的具体规范。
首选项树的每个节点都具有一个节点名(不必是唯一的)、一个唯一的绝对路径名和一个相对于每个祖先(包括它自己)的路径名。根节点的节点名为空字符串("")。每个其他节点的节点名可以在创建时任意指定。此名称的唯一限制是,它不能是空字符串,也不能包含斜杠字符('/')。根节点的绝对路径名为 "/"。根节点的子节点的绝对路径名是 "/" + <节点名>。所有其他节点的绝对路径名是<父节点的绝对路径名> + "/" + <节点名>。
注意:
·任何相对路径名的第一个字符都不能是斜杠。
·每个节点相对于自身的路径名都是空字符串。
·每个节点相对于父节点的路径名就是其节点名,根节点除外,因为它没有父节点。
·每个节点相对于根的路径名都是其移除开头斜杠的绝对路径名。
·任何路径名均不能包含多个连续的斜杠字符。
·任何路径名均不能以斜杠字符结尾,根的绝对路径名除外。
Preferences API除了能够存储字符串之外,还能够存储字节数组,这对于存储可序列化的对象非常方便。此外,Preferences API 还允许我们注册事件回调实例(实现PreferencesChangeListener接口的类),当发生修改Preferences数据的事件时,这些实例将被调用。通过这一机制,可以使得当首选项数据发生改变时不需要重启服务器来使修改生效,即给与我们实时配置应用程序的能力。
如果不想把数据存储在Windows注册表或本地的文件系统中,可以使用自定义的Preference类,从而把数据写入到其它地方,包
括关系型数据库或LDAP服务器。这里的自定义Preference类必须继承自AbstractPreferences。
每个Preferences实现都必须具有一个关联的PreferencesFactory实现。每个Java(TM) SE实现都必须提供一些方式,来指定将哪个 PreferencesFactory 实现用于生成根首选项节点。这允许管理员使用替代实现替换默认首选项实现。
实现注意事项:在 Sun 的 JRE 中,PreferencesFactory 实现的位置如下:
1、如果定义了系统属性java.util.prefs.PreferencesFactory,则该属性名就会用作实现PreferencesFactory接口的类的完全限定名。加载并实例化该类;如果此进程失败,则抛出未指定的错误。
2、如果在对系统类加载器可见的jar文件中安装了PreferencesFactory实现类文件,并且该jar文件在资源目录META-INF/services中包含名为java.util.prefs.PreferencesFactory的提供者配置文件,则采用在该文件中指定的第一个类名称。如果提供了一个以上这样的jar文件,则使用找到的第一个文件。加载并实例化该类;如果此进程失败,则抛出未指定的错误。
3、最后,如果既没有提供上述系统属性也没有提供扩展jar文件,则加载和实例化底层平台的系统级默认PreferencesFactory实现。
修改首选项数据的所有方法都允许进行异步操作;它们可能立即返回,但是更改最终将传播到持久内部存储中,其延迟取决于实现。可以使用flush方法同步地将更新强制同步到内部存储中。Java虚拟机的正常终止不会 导致挂起更新的丢失,即在终止时不需要进行显式flush调用来使挂起更新变得持久。单个JVM中的多个线程可以同时调用此类中的方法,无需进行外部同步,其结果等效于某些顺序执行。如果在同一个内部存储中存储其首选项数据的多个JVM同时使用此类,则数据存储也不会遭到破坏,但首选项数据的一致性难以得到保证。
用Preferences API还可以将首选项数据导出成XML格式,也可以从XML或其他类似的结构中导入数据。通过这种方式可以在机器间方便地传递首选项数据,也可以对首选项数据进行备份和恢复。
其XML文档的DOCTYPE声明如下:
注意,导入或导出首选项时不访问系统URI(http://java.sun.com/dtd/preferences.dtd);该系统URI仅作为一个唯一标识DTD的字符串:
type (system|user) #REQUIRED >
name CDATA #REQUIRED >
key CDATA #REQUIRED
value CDATA #REQUIRED >
发表评论
-
Transfer
2017-06-29 23:03 0Find connections count: ... -
Discover the Mystery of Metaspace
2017-06-23 16:47 0The JDK 8 HotSpot JVM is now u ... -
Command Line JMX Client
2014-12-29 13:12 2595Command Line Parser: GNUComman ... -
Something about JVM class loading and initialization
2014-05-09 10:04 1032Class loading stages: Loadin ... -
When a class is loaded and initialized in JVM - Java
2014-05-08 19:09 988from: http://javarevisited.blo ... -
【深入Java虚拟机】之四:类加载机制
2014-05-08 15:12 899转载请注明出处:http://blog.csdn.net/n ... -
Java Reflection - Dynamic Class Loading and Reloading
2014-05-08 12:04 942From: http://tutorials.jenkov. ... -
Java 类加载与初始化
2014-02-19 19:12 809转载自:http://www.cnblogs.c ... -
javax.management.StandardMBean: When and Why. (Reposted)
2013-12-26 15:34 1084Q: When is a Standard MBean no ... -
JVM调优的"标准参数"的各种陷阱(转)
2013-11-11 19:55 2051From: http://hllvm.group.itey ... -
Java SE 6 HotSpot[tm] Virtual Machine Garbage Collection Tuning
2013-11-11 11:05 1018(From: http://www.oracle.com/ ... -
An article about TLAB
2013-11-11 10:57 756(From: https://blogs.oracle.co ... -
【JVM】HotSpot JVM内存管理和GC策略总结(转)
2013-11-07 23:39 592JVM的相关知识是学习java高级特性必须要去深入学习的。平 ... -
jstat分析VM内存
2013-11-07 16:41 904Jstat 是JDK自带的一个轻量级小工具。全称“Java ... -
java的GridBagLayout网格包布局管理器使用详解 (转)
2013-11-01 16:44 0网格包布局管理是最复 ... -
java动态跟踪分析工具BTrace实现原理
2013-09-01 12:34 1267转自:http://kenwublog.com ... -
Java synchronize用法(转)
2012-11-05 00:20 1207在多个并发线程之间共用资源,就需要进行同步处理。Java虚拟机 ... -
Interview material collection
2012-07-09 23:05 11901. Why can't static methods be ... -
不要重复 DAO!(转)
2011-12-29 22:17 1242使用 Hibernate 和 Spri ... -
JVM 诊断工具(转)
2011-11-25 12:00 17611.jinfo 描述:输出给定 java 进程所有的配置信 ...
相关推荐
4. **备份与恢复**:可以通过`exportNode()`和`importNode()`方法导出和导入Preferences数据,这在迁移或恢复配置时非常有用。 5. **异常处理**:在进行读写操作时,应妥善处理可能出现的`BackingStoreException`,...
本文将探讨Java中读写注册表的两种方式:Preferences API和jRegistry工具。 首先,需要明确的是,Java的跨平台特性意味着编写一次程序就可以在不同的操作系统上运行。然而,当涉及到读写注册表时,就可能会影响到...
Java 操作 Windows 注册表 Java 语言是一种跨平台的编程语言,但是在实际的编程中,我们经常需要在 ...Java 不能直接任意操作 Windows 注册表,其中 java.util.prefs 中的 Preferences 类只可以操作部分注册表。
Java从JDK 1.4版本开始引入了一个名为`Preferences`的类,该类提供了方便的方式来管理和操作用户的首选项,其中包括对Windows注册表的操作。 `Preferences`类提供了一个层次化的键值对存储系统,允许我们创建、读取...
在Java中,通过`java.util.prefs.Preferences`类可以实现与注册表的交互,包括读取、写入和删除键值等操作。 ### 代码示例解析 在给定的部分内容中,我们看到了一个名为`PrefsDemo`的Java类,该类展示了如何使用...
### Java操作Windows注册表:深入理解与实践 在IT领域,特别是软件开发中,了解如何使用Java语言操作Windows注册表是一项关键技能。Windows注册表是Windows操作系统的核心组件之一,用于存储系统和应用程序设置的...
Jave的Preferences只在Software\JavaSoft\Prefs操作,反射WindowsPreferences能够操作Windows注册表的其他节点. 方法: 1.public static void put(int root,String path,String key,String val) 2.public static ...
Preferences通常用于保存应用程序中的键值对,类似于桌面操作系统的注册表或配置文件。这篇内容我们将深入探讨Android中的Preferences数据存储。 一、Preferences的类型 Preferences主要分为两种类型:...
对于Java程序来说,虽然不直接访问系统的注册表,但可以通过Java平台提供的`java.util.prefs.Preferences`类来模拟这一功能。这种方式不仅限于Windows系统,也适用于其他操作系统,如Linux或Mac OS。 #### 三、...
- **缺点**:只能操作与Java相关的注册表节点,无法编辑整个注册表。 5. **参考资料**: - IBM Developer上的一篇文章:“[用Preferences API存储对象]...
### 修改注册表:深入理解与操作 #### 注册表概览 注册表是Windows操作系统中一个重要的数据库,用于存储系统和应用程序的配置信息。它包含了系统运行所需的各种参数,包括硬件配置、用户设置、应用程序配置等。...
Java 操作注册表主要涉及到 `java.util.prefs` 包中的 `Preferences` 类,这是一个用于存储用户和系统首选项的接口。从 JDK 1.4 开始,Java 提供了这个包来支持跨平台的首选项存储,允许开发者在不依赖特定操作系统...
本文将详细介绍三种主要的方法:使用`java.util.prefs.Preferences`API、通过命令行导入注册表文件(`.reg`文件)以及使用第三方库如gdapi。 #### 二、方法1:使用`java.util.prefs.Preferences` `java.util.prefs....
- 通过`Preferences`,可以将程序相关的配置信息保存到Windows注册表中。 **步骤**: 1. **创建Preference对象**:通过调用`Preferences.systemRoot()`或`Preferences.userRoot()`获取根节点。 2. **设置键值对**:...
应用程序可以通过Preferences类提供的方法来读取和写入注册表,例如使用put(String key, String value)来存储字符串值,使用putInt(String key, int value)和putDouble(String key, double value)等方法来存储其他...
这意味着通过Preferences API存储的数据会被保存到Windows注册表中,从而使得Preferences API具备了访问注册表的能力。然而,这种能力依赖于特定的JDK实现,因此并不具有跨平台性或通用性。 **优点**: - 简单易用...
在Windows系统中,`Preferences` API使用注册表来保存信息,而在Unix/Linux系统中,信息通常存储在用户的家目录下的一个隐藏文件中。这样保证了用户特定的设置不会影响其他用户,同时也使得应用程序能在用户的不同...
如设置程序安装后的输出文件夹,安装程序的图标,应用程序的名称及版本,安装程序语言及密码,安装弹出的对话框及快捷方式,添加到注册表项及可执行卸载程序等,支持创建安装程序解压缩器。可创建安装脚本及卸载脚本...
"UninstallTool"是一款高效的绿色卸载工具,其主要功能在于帮助用户彻底卸载计算机上的应用程序,并在卸载过程中清理与之相关的注册表残留。这一特性对于保持系统整洁和优化性能至关重要,因为常规的卸载程序往往...