Properties类
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Properties类相关的知识,希望对你有一定的参考价值。
1.继承关系java.lang.Object
继承者 java.util.Dictionary<K,V>
继承者 java.util.Hashtable<Object,Object>
继承者 java.util.Properties
2.特性
Properties
1.继承与Hashtable,所以是线程安全的键值对存储结构
2.可保存在流中或从流中加载
3.不同于Hashtable,Hashtable可保存object对象的键值对,Properties只能保存字符串类型的键值对
3.常用方法:
setProperty(String key, String value) 调用 Hashtable 的方法 put。
getProperty(String key, String defaultValue) 用指定的键在属性列表中搜索属性。
list(PrintWriter out) 将属性列表输出到指定的输出流
load(Reader reader) 按简单的面向行的格式从输入字符流中读取属性列表(键和元素对)。
store(Writer writer, String comments) 以适合使用 load(Reader) 方法的格式,将此 Properties 表中的属性列表(键和元素对)写入输出字符
4.实际使用
在src目录下,创建一个prop.properties文件,里面写上key=value的键值对数据,然后进行load加载,比如jdbc信息
代码1:设置和获取key-value
import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.util.Properties; import java.util.Set; public class Main_Properties { public static void main(String[] args) { Properties prop=new Properties(); prop.setProperty("name", "张三"); prop.setProperty("age" , "10"); System.out.println(prop); /** * 输出: * {age=10, name=张三} * */ String name=prop.getProperty("name"); String age =prop.getProperty("age"); String id =prop.getProperty("id"); System.out.println("name : "+name+",age :"+age+",id : "+id); /** * 输出 * name : 张三,age :10,id : null * */ PrintWriter pw=null; try { pw=new PrintWriter(new FileWriter("E:/0326.txt"),true); Set<Object> set=prop.keySet(); for(Object obj:set) { String key = (String) obj; String value = prop.getProperty(key); pw.println(key+":"+value); /** * 文件中输出内容 * 1 age:10 * 2 name:张三 * 3 会多出一行空行,pw.println导致 * */ } } catch (IOException e) { System.out.println("【异常】: IO错误"); } finally { if(pw!=null) { pw.close(); } } System.out.println("end"); } }
代码2:写入文件中
import java.io.FileNotFoundException; import java.io.PrintWriter; import java.util.Properties; public class Main_Properties_List { public static void main(String[] args) { Properties prop=new Properties(); prop.setProperty("name", "张三"); prop.setProperty("age" , "10"); PrintWriter pw=null; try { pw=new PrintWriter("E:/0326_2.txt"); prop.list(pw); /** * 文件写入内容,默认间隔符是等号 * 1 -- listing properties -- * 2 age=10 * 3 name=张三 * 4 <多出一行空行> * */ } catch (FileNotFoundException e) { System.out.println("【异常】:未找到文件"); } finally { if(pw!=null) { pw.close(); } } System.out.println("end"); } }
代码3:从文件中加载属性
import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.Properties; public class Main_Properties_Load { public static void main(String[] args) { Properties prop=new Properties(); FileReader fr =null; try { fr =new FileReader("E:/1.txt"); /** * 文件内容 * name=www * age=30 * [email protected]大连 <这行使用的不是默认标准的分隔符> * daxue:工大 <这行使用的不是默认标准的分隔符> * */ prop.load(fr); String name =prop.getProperty("name"); String age =prop.getProperty("age"); String city =prop.getProperty("city"); String daxue=prop.getProperty("daxue"); System.out.println("name="+name+",age="+age+",city="+city+",daxue="+daxue); /** * <输出内容> * name=www,age=30,city=null,daxue=工大 * */ } catch (FileNotFoundException e) { System.out.println("【异常】文件未找到"); } catch (IOException e) { System.out.println("【异常】IO"); } finally { if(fr!=null) { try { fr.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
代码4:带注释存储到文件中
import java.io.FileWriter; import java.io.IOException; import java.util.Properties; public class Main_Properties_Store { public static void main(String[] args) { Properties prop=new Properties(); prop.setProperty("name", "张三"); prop.setProperty("age" , "10"); FileWriter fw=null; try { fw=new FileWriter("E:/0326_3.txt"); prop.store(fw, "这里是注释"); /** * 文件写入内容 * 1 #\u8FD9\u91CC\u662F\u6CE8\u91CA 这行是"这里是注释" * 2 #Mon Mar 26 20:53:18 CST 2018 这行是自动生成的时间 * 3 age=10 * 4 name=张三 * 5 <多出一行空行> * */ } catch (IOException e) { System.out.println("【异常】IO"); } finally { if(fw!=null) { try { fw.close(); } catch (IOException e) { e.printStackTrace(); } } } System.out.println("end"); } }
以上是关于Properties类的主要内容,如果未能解决你的问题,请参考以下文章
如何通过单击片段内的线性布局从片段类开始新活动?下面是我的代码,但这不起作用
elasticsearch代码片段,及工具类SearchEsUtil.java
使用ResourceBundle 类读取 src 下的 xxx.properties 文件
Android 逆向类加载器 ClassLoader ( 类加载器源码简介 | BaseDexClassLoader | DexClassLoader | PathClassLoader )(代码片段