标签:io流 oid except 写入 iterator 数据 asn demo 绑定
java.util.Properties继承于Hashtable,来表示一个持久的属性集。它使用键值结构存储数据,每个键及其对应值都是一个字符串。该类也被许多Java类使用,比如获取系统属性时, System.getProperties方法就是返回一个Properties对象。
Properties集合是Hashtable集合的子类,Hashtable类是Map接口的其中一个实现类。Properties集合 是唯一一个和IO流相结合的集合。Properties类表示了一个持久的属性集。 Properties可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。
java.util.Properties extends Hashtable<k, v> java.util.Hashtable implements Map<k, v>
public Properties() { this(null); } // 创建一个空属性列表 public Properties(Properties defaults) { this.defaults = defaults; } // 创建一个预设属性列表
public synchronized Object setProperty(String key, String value) { return put(key, value); } // 保存一对属性
public String getProperty(String key) { ... } // 使用此属性列表中指定的键搜索属性值
public Set<String> stringPropertyNames() { ... } // 所有键的名称的集合
这几个方法的使用:举例
import java.util.Iterator; import java.util.Properties; import java.util.Set; public class Demo01Properties { public static void main(String[] args) { method(); } public static void method() { // 创建Properties集合对象,Properties集合可key和value都是String类型 Properties p = new Properties(); // 使用setProperty()方法,往集合中添加数据。该方法相当于Map集合中的put方法 p.setProperty("程序猿", "22"); p.setProperty("攻城狮", "25"); p.setProperty("骇客", "19"); // 使用stringPropertyNames()方法,把Properties集合中所有的键存储到一个Set<String>集合中。 Set<String> s = p.stringPropertyNames(); // 遍历Set集合,取出Properties集合中的每一个值。 Iterator<String> ite = s.iterator(); while ((ite.hasNext())) { String key = ite.next(); String value = p.getProperty(key); System.out.println(key + "=" + value); } } }
public void store(Writer writer, String comments) // 把集合中的临时数据,持久化的存储到硬盘中。 public void store(OutputStream out, String comments) // 把集合中的临时数据,持久化的存储到硬盘中。 参数: Writer writer:字符输出流,可以写中文。 OutputStream out:字节输出流,不可以写中文。 String comments:注释,用来解释说明保存的文件是做什么用的。不可以使用中文,否则会出现乱码,默认是Unicode编码。一班使用"空字符串"。
举例:把集合中的数据,持久化的存储到硬盘中。
使用步骤:
import java.io.FileWriter; import java.io.IOException; import java.util.Properties; public class DemoPropertiesStore { public static void main(String[] args) throws IOException { method(); } public static void method() throws IOException { // 创建Properties集合对象,添加数据。 Properties p = new Properties(); p.setProperty("程序猿", "22"); p.setProperty("攻城狮", "25"); p.setProperty("骇客", "19"); // 创建字符输岀流对象,构造方法中绑定要输岀的目的地。 FileWriter fw = new FileWriter("/Users/liyihua/IdeaProjects/Study/src/view/study/demo32/p.txt"); // 使用Properties集合中的方法store,把集合中的临时数据,持久化写入到硬盘中存。 p.store(fw, "save data"); // 释放资源。 fw.close(); } }
运行结果,生成一个p.txt文件,文件内容如下:
public synchronized void load(Reader reader) throws IOException { ... } // 把硬盘中保存到的文件(键值对),读取到集合中使用。 public synchronized void load(InputStream inStream) throws IOException { ... } // 把硬盘中保存到的文件(键值对),读取到集合中使用。 参数: Reader reader:字符输入流,能读取含有中文的键值对。 InputStream inStream:字节输入流,不能读取含有中文的键值对。
举例:把硬盘中保存到的文件(键值对),读取到集合中使用。读取上例中的p.txt文件。
使用步骤:
import java.io.FileReader; import java.io.IOException; import java.util.Iterator; import java.util.Properties; import java.util.Set; public class DemoPropertiesLoad { public static void main(String[] args) throws IOException { method(); } public static void method() throws IOException { // 创建Properties集合对象。 Properties p = new Properties(); // 使用Properties集合对象中的方法load,读取保存键值对的文件。 FileReader reader = new FileReader("/Users/liyihua/IdeaProjects/Study/src/view/study/demo32/p.txt"); p.load(reader); // 遍历Properties集合,输出。 Set<String> s = p.stringPropertyNames(); Iterator<String> ite = s.iterator(); while (ite.hasNext()) { String key = ite.next(); String value = p.getProperty(key); System.out.println(key + "=" + value); } } }
控制台输出:
程序猿=22 攻城狮=25 骇客=19
标签:io流 oid except 写入 iterator 数据 asn demo 绑定
原文地址:https://www.cnblogs.com/liyihua/p/12267542.html