- 浏览: 5028898 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (2844)
- java (1094)
- hadoop (37)
- jvm (39)
- hbase (11)
- sql (25)
- 异常 (83)
- div css (6)
- 数据库 (95)
- 有趣的code (15)
- struts2 (6)
- spring (124)
- js (44)
- 算法 (65)
- linux (36)
- hibernate (7)
- 中间件 (78)
- 设计模式 (2)
- 架构 (275)
- 操作系统 (91)
- maven (35)
- tapestry (1)
- mybatis (9)
- MQ (101)
- zookeeper (18)
- 搜索引擎,爬虫 (208)
- 分布式计算 (45)
- c# (7)
- 抓包 (28)
- 开源框架 (45)
- 虚拟化 (12)
- mongodb (15)
- 计算机网络 (2)
- 缓存 (97)
- memcached (6)
- 分布式存储 (13)
- scala (5)
- 分词器 (24)
- spark (104)
- 工具 (23)
- netty (5)
- Mahout (6)
- neo4j (6)
- dubbo (36)
- canal (3)
- Hive (10)
- Vert.x (3)
- docker (115)
- 分布式追踪 (2)
- spring boot (5)
- 微服务 (56)
- 淘客 (5)
- mesos (67)
- php (3)
- etcd (2)
- jenkins (4)
- nginx (7)
- 区块链 (1)
- Kubernetes (92)
- 驾照 (1)
- 深度学习 (15)
- JGroups (1)
- 安全 (5)
- 测试 (16)
- 股票 (1)
- Android (2)
- 房产 (1)
- 运维 (6)
- 网关 (3)
最新评论
-
明兜3号:
部署落地+业务迁移 玩转k8s进阶与企业级实践技能(又名:Ku ...
Kubernetes系统常见运维技巧 -
q328965539:
牛掰啊 资料收集的很全面
HDFS小文件处理解决方案总结+facebook(HayStack) + 淘宝(TFS) -
guichou:
fluent挂载了/var/lib/kubelet/pods目 ...
kubernetes上部署Fluentd+Elasticsearch+kibana日志收集系统 -
xu982604405:
System.setProperty("java.r ...
jmx rmi 穿越防火墙问题及jmxmp的替代方案 -
大漠小帆:
麻烦问下,“获取每个Item相似性最高的前N个Item”,这个 ...
协同过滤推荐算法在MapReduce与Spark上实现对比
写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)
我们可以导出一个节点,或是导出整个子节点树.
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.prefs.BackingStoreException;
import java.util.prefs.Preferences;
/**
* Preferences有两种保存文件的方式:
* 1. sysRoot 与系统有关的用户配置文件,此文件只要是系统用户都可以访问
* 2. userRoot 与用户有关的用户配置文件,只有该用户才可以访问
* 但两者的操作方法完全一样
*
* @author Administrator
*
*/
public class PreferencesTest {
private String[] keys = { "userName", "userPwd", "userEmail" };
private String[] values = { "Lixing", "123456", "hnlixing520@126.com" };
/**
* 设置Preferences的值
* @param userRoot
*/
private void setPreference(Preferences userRoot) {
for (int i = 0; i < keys.length; i++) {
userRoot.put(keys[i], values[i]);
}
}
/**
* 获得Preferences的指定值
* @param userRoot
*/
private void getPreference(Preferences userRoot){
System.out.println( "userName: " + userRoot.get("userName", "佚名") );
System.out.println( "userPwd: " + userRoot.get("userPwd", "0000") );
System.out.println( "userEmail: " + userRoot.get("userEmail", "xxx@126.com") );
}
/**
* 移除Preferences的首层包
* @param userRoot
*/
private void removeNode(Preferences userRoot){
try {
userRoot.removeNode();
} catch (BackingStoreException e) {
e.printStackTrace();
}
System.out.println( "removeNode success" );
}
/**
* 以树型结构导出为XML
* @param userRoot
*/
private void exportSubTree(Preferences userRoot) {
OutputStream os = null;
File file =new File("preferences.xml");
try {
os = new FileOutputStream( file );
userRoot.exportSubtree(os);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (BackingStoreException e) {
e.printStackTrace();
} finally {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println( "export tree success filename " + file.getName() );
}
public static void main(String[] args) {
PreferencesTest test = new PreferencesTest();
//以包的方式建立用户配置,目的就是防止冲突,便于管理
Preferences userRoot = Preferences.userNodeForPackage(PreferencesTest.class);
test.setPreference(userRoot);
test.exportSubTree(userRoot);
test.getPreference(userRoot);
test.removeNode(userRoot);
}
}
发表评论
-
Kryo 使用指南
2017-12-05 20:14 20071、Kryo 的简介 Kryo 是一个快速序列化/ ... -
spring session序列化问题排查
2017-12-01 19:07 6264严重: Servlet.service() for ser ... -
利用junit对springMVC的Controller进行测试
2017-11-30 16:26 1441平时对junit测试service/D ... -
Java内存模型之重排序
2017-11-29 09:44 858在执行程序时,为了提供性能,处理器和编译器常常会对指令进行重 ... -
pmd spotbugs 文档
2017-11-28 10:02 0https://pmd.github.io/pmd/pmd ... -
PMD、FindBug、checkstyle、sonar这些代码检查工具的区别?各自的侧重点是什么?
2017-11-28 10:01 2142可以说都是代码静态分析工具,但侧重点不同。pmd:基于源代码 ... -
阿里巴巴Java代码规约插件p3c-pmd使用指南与实现解析
2017-11-23 17:09 1602阿里巴巴Java代码规约插件安装 阿里Java代码规 ... -
静态分析工具PMD使用说明 (文章来源: Java Eye)
2017-11-23 17:07 1140质量是衡量一个软件是否成功的关键要素。而对于商业软件系统,尤 ... -
MyBatis 使用 MyCat 实现多租户的一种简单思路
2017-11-20 18:27 2836本文的多租户是基于多数据库进行实现的,数据是通过不同数据库进 ... -
Spring+MyBatis实现数据库读写分离方案
2017-11-20 17:15 1075百度关键词:spring mybatis 多数据源 读写分离 ... -
数据库连接池druid wallfilter配置
2017-11-20 11:38 1335使用缺省配置的WallFilter <be ... -
java restful 实体封装
2017-11-16 09:47 1588package com.mogoroom.bs.commo ... -
dak
2017-11-15 11:21 0package zzm; import jodd.ht ... -
Java内存模型之从JMM角度分析DCL
2017-11-15 09:35 635DCL,即Double Check Lock,中卫双重检查锁 ... -
Java 打印堆栈的几种方法
2017-11-14 09:36 4741java 中可以通过 eclipse 等工具直接打印堆栈, ... -
Servlet Session学习
2017-11-10 09:25 548HTTP 是一种"无状 ... -
浅析Cookie中的Path与domain
2017-11-10 09:26 1057Path – 路径。指定与co ... -
入分析volatile的实现原理
2017-11-08 09:47 683通过前面一章我们了解了synchronized是一个重量级的 ... -
Spring MVC-ContextLoaderListener和DispatcherServlet
2017-11-15 09:35 681Tomcat或Jetty作为Servlet ... -
搭建spring框架的时候,web.xml中的spring相关配置,可以不用配置ContextLoaderListener(即只配DispatcherServl
2017-11-07 18:27 1432搭建spring框架的时候,web.xml中的sprin ...
相关推荐
java.lang, java.util Packages Instrumentation Language and Utility Packages Monitoring and Management Package Version Identification Reference Objects Reflection Collections Framework ...
Preferences sysPrefs = Preferences.systemRoot(); // 设置键值 sysPrefs.put("exampleKey", "exampleValue"); // 读取键值 String value = sysPrefs.get("exampleKey", "defaultValue"); System.out....
- **preferences.gif**:这可能是一个GUI应用程序中的设置或首选项相关的图形资源,通常在Java应用程序中用于表示用户界面的某些选项或配置。 - **java.stx**:.stx文件通常是语法模板文件,可能包含Java语言的...
通过使用 Preferences.systemRoot() 和 Preferences.userRoot() 方法,可以获取系统参数项和用户参数项的根节点。 在使用 Preferences 类时,需要注意以下几点: 1. 节点的首字母不要大写,不然在注册表中的项前就...
Preferences API主要包括两个主要类:`java.util.prefs.Preferences.systemNodeForPackage()`和`java.util.prefs.Preferences.userNodeForPackage()`. `systemNodeForPackage()`返回的是系统级别的偏好设置,通常...
1. **创建Preference对象**:通过调用`Preferences.systemRoot()`或`Preferences.userRoot()`获取根节点。 2. **设置键值对**:使用`put(String key, String value)`等方法来设置注册表中的键值对。 3. **读取数据**...
例如,可以通过调用`Preferences.systemRoot().node("Software\\JavaSoft\\Prefs")`获取到`HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Prefs`节点,然后使用`put`和`get`方法进行数据的存取。 但是,需要注意的是,`...
节点可以是全局的也可以是用户的,分别通过`Preferences.systemRoot()`和`Preferences.userRoot()`方法获得。 2. **创建子节点**:可以通过调用`node()`方法创建子节点,这相当于在注册表中创建一个新的键。 3. **...
2. **创建偏好设置对象**:`Preferences prefDemo = Preferences.userRoot().node("/com/sunway/spc");` 这一行代码创建了一个`Preferences`对象,用于指定用户级别的根节点,并进一步指定一个名为`/com/sunway/spc`...
1. `Preferences.userRoot()` - 这个方法返回一个 `Preferences` 实例,代表当前用户首选项的根节点。在 Windows 上,它对应于 `HKEY_CURRENT_USER\Software\JavaSoft\Prefs`。 2. `Preferences.systemRoot()` - ...
本文介绍了三种使用Java修改Windows注册表的方法:利用`java.util.prefs.Preferences`、使用“regedit /s”命令导入注册表文件以及使用第三方库GDAPI。每种方法都各有优势和局限性,开发者应根据实际需求选择最合适...
Java提供了多种持久化存储方案,如`java.util.prefs.Preferences`用于轻量级配置存储,或者使用数据库(如SQLite)进行更复杂的数据管理。 10. **调试和日志**: 开发过程中,调试和日志记录是非常重要的。Java提供...
一、 android java.net.UnknownHostException: Unable to resolve host"...": No address associated 错误 该错误是 Android 开发中常见的错误,主要是由于网络连接未开启或 Manifest 文件未标明网络访问权限所致。...
- 键的长度受限于`Preferences.MAX_KEY_LENGTH`(80个字符),而值的长度受限于`Preferences.MAX_VALUE_LENGTH`(8192个字符)。 - 在写入数据时,如果存储机制不可用,会抛出`BackingStoreException`异常。 #### ...
此外,还可以使用第三方库如Apache Commons Configuration或Java 8引入的`java.util.prefs.Preferences` API来提供更高级的配置管理功能,如支持XML配置、默认值、监听属性变化等。 总结,Java中的`java.util....
Java提供了多种本地存储选项,如`java.util.prefs.Preferences`系统,或者使用`java.io.File`或`java.nio.file`包来读写文件。 总的来说,实现Java自动登录功能需要理解HTTP协议、Cookie和Session机制,掌握网络...
Java Preferences User Interface(JPUI)是一个开源项目,专注于提供一个基于Java/Swing的图形用户界面,使得用户可以方便地浏览和编辑使用Java 1.4.x版本中的`java.util.prefs`包创建的Java首选项。Java首选项系统...
这可以通过调用`Preferences.userRoot().node()`方法完成,传入一个标识符(通常是类名)作为节点名称。接着,你可以使用`get`和`set`方法来读写偏好。例如: - `prefs.getBoolean(key, defaultValue)`:获取指定键...