java基础学习之Properties 十二
来源:互联网 发布:手机java小游戏代码 编辑:程序博客网 时间:2024/05/21 17:29
Properties
类表示了一个持久的属性集。Properties
可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。
一个属性列表可包含另一个属性列表作为它的“默认值”;如果未能在原有的属性列表中搜索到属性键,则搜索第二个属性列表。
因为 Properties
继承于 Hashtable
,所以可对 Properties
对象应用 put
和 putAll
方法。但不建议使用这两个方法,因为它们允许调用者插入其键或值不是 String
的项。相反,应该使用 setProperty
方法。如果在“不安全”的 Properties
对象(即包含非 String
的键或值)上调用 store
或 save
方法,则该调用将失败。类似地,如果在“不安全”的 Properties
对象(即包含非 String
的键)上调用 propertyNames
或 list
方法,则该调用将失败。
load(Reader)
/ store(Writer, String)
方法按下面所指定的、简单的面向行的格式在基于字符的流中加载和存储属性。除了输入/输出流使用 ISO 8859-1 字符编码外,load(InputStream)
/ store(OutputStream, String)
方法与 load(Reader)/store(Writer, String) 对的工作方式完全相同。可以使用 Unicode 转义来编写此编码中无法直接表示的字符;转义序列中只允许单个 'u' 字符。可使用 native2ascii 工具对属性文件和其他字符编码进行相互转换。
loadFromXML(InputStream)
和 storeToXML(OutputStream, String, String)
方法按简单的 XML 格式加载和存储属性。默认使用 UTF-8 字符编码,但如果需要,可以指定某种特定的编码。XML 属性文档具有以下 DOCTYPE 声明:
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
注意,导入或导出属性时不 访问系统 URI (http://java.sun.com/dtd/properties.dtd);该系统 URI 仅作为一个唯一标识 DTD 的字符串: <?xml version="1.0" encoding="UTF-8"?> <!-- DTD for properties --> <!ELEMENT properties ( comment?, entry* ) > <!ATTLIST properties version CDATA #FIXED "1.0"> <!ELEMENT comment (#PCDATA) > <!ELEMENT entry (#PCDATA) > <!ATTLIST entry key CDATA #REQUIRED>
Properties简单使用:
package properties;import java.util.Properties;import java.util.Set;/** * * @author Angus *Properties *可以和IO流结合使用,建和值都是字符串 *Properties的父类为HashTable,可以看成Map体系的。 */public class PropertiesDemo {public static void main(String[] args) {//创建集合对象Properties prop = new Properties();//添加元素prop.put("001", "hello");prop.put("002", "world");prop.put("003", "java");//遍历Set<Object> keySet = prop.keySet();for (Object object : keySet) {Object object2 = prop.get(object);System.out.println(object+"****"+object2);}}}结果
特殊方法的使用:
package properties;import java.util.Properties;import java.util.Set;/** * * @author Angus * 特殊方法: * 1;修改 * setProperty(String key, String value) 调用 Hashtable 的方法 put。 * 2:获取 * getProperty(String key) 用指定的键在此属性列表中搜索属性。 * getProperty(String key, String defaultValue) 用指定的键在属性列表中搜索属性。 * stringPropertyNames() 返回此属性列表中的键集,其中该键及其对应值是字符串,如果在主属性列表中未找到同名的键,则还包括默认属性列表中不同的键。 */public class PropertiesDemo {public static void main(String[] args) {//创建集合对象Properties prop = new Properties();//添加元素prop.setProperty("001", "hello");prop.setProperty("002", "world");prop.setProperty("003", "java");System.out.println(prop.getProperty("001"));System.out.println(prop.getProperty("002"));System.out.println(prop.getProperty("003"));System.out.println("----------------------------------");System.out.println(prop.getProperty("003", "没有啊"));System.out.println(prop.getProperty("004", "没有啊"));System.out.println("----------------------------------");Set<String> set = prop.stringPropertyNames();for (String key : set) {String value = prop.getProperty(key);System.out.println(key+"***"+value);}System.out.println("----------------------------------");//遍历Set<Object> keySet = prop.keySet();for (Object object : keySet) {Object object2 = prop.get(object);System.out.println(object+"****"+object2);}}}
结果:
系统属性方法:getProperties
package properties;import java.util.Properties;import java.util.Set;/** * @author Angus * getProperties 系统属性 */public class PropertiesDemo {public static void main(String[] args) {Properties prop = System.getProperties();System.out.println(prop.size());Set<String> set = prop.stringPropertyNames();for (String key : set) {String value = prop.getProperty(key);System.out.println(key+"****"+value);}}}
各种属性;
Properties和IO流的结合
package properties;import java.io.BufferedWriter;import java.io.FileWriter;import java.io.IOException;import java.io.PrintWriter;import java.util.Properties;import java.util.Set;/** * @author Angus * Properties和IO流的结合 * list(PrintStream out) 将属性列表输出到指定的输出流。 * list(PrintWriter out) 将属性列表输出到指定的输出流。 */public class PropertiesDemo {public static void main(String[] args) throws IOException{//获取系统的属性集合Properties prop =System.getProperties();//需求,把数据写到文本文件//方式一 但是这样并没有结合到一起//BufferedWriter bw = new BufferedWriter(new FileWriter("a.txt"));////Set<String> stringPropertyNames = prop.stringPropertyNames();//for (String string : stringPropertyNames) {//String property = prop.getProperty(string);//bw.write(string);//bw.write("=");//bw.write(property);//bw.newLine();//bw.flush();//}//bw.close();//方式二 list(PrintWriter out)PrintWriter pw = new PrintWriter("b.txt");prop.list(pw);pw.close();}}
结果;
从文本文件加载数据
package properties;import java.io.BufferedWriter;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.PrintWriter;import java.util.Properties;import java.util.Set;/** * @author Angus * * 从文本文件加载数据 * load(InputStream inStream) 从输入流中读取属性列表(键和元素对)。 * load(Reader reader) 按简单的面向行的格式从输入字符流中读取属性列表(键和元素对)。 */public class PropertiesDemo {public static void main(String[] args) throws IOException{Properties prop = new Properties();//创建FileReader对象FileReader fr = new FileReader("a.txt");prop.load(fr);fr.close();System.out.println(prop.size()); //4System.out.println(prop); //{张三4=114, 张三3=113, 张三2=112, 张三1=111}Set<String> stringPropertyNames = prop.stringPropertyNames();for (String key : stringPropertyNames) {String value = prop.getProperty(key);System.out.println(key+"***"+value);}}}
结果;
最后附上JDK使用文档API 下载
- java基础学习之Properties 十二
- java基础之Properties
- java 从零开始,学习笔记之基础入门<Static>(十二)
- Java基础之Properties类
- Java学习路上之Properties!
- UI基础学习之(十二):UINavigationController
- Java基础<十二>--->集合之map
- Java基础之十二:网络编程
- Java基础之(十二)二维数组
- Java基础--IO流之Properties
- java 从零开始,学习笔记之基础入门<SQL_Server_常用查询>(二十二)
- java深入学习十二之文件
- Tensorflow深度学习之十二:基础图像处理之二
- JAVA之Properties文件的学习
- 网络安全基础之<十二>
- 十二.Java基础_GUI
- Java基础<十二>-----集合
- Java基础十二
- laravel小技艺
- SB的生日
- Android Camera2 自定义相机
- shell脚本之定义变量
- 线性表的顺序存储格式基本操作:初始化、插入、删除、查找、打印
- java基础学习之Properties 十二
- 中介公司的故事(一)-Java静态代理
- <操作系统:精髓与设计原理> 计算机系统概述
- 浅谈bootstrap之栅格系统
- mac grunt 安装
- 多线程初步
- linux nc
- 房间安排
- java利用url实现网页内容的抓取