为了账号安全,请及时绑定邮箱和手机立即绑定

Properties类

标签:
Java

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			 * city@大连      <这行使用的不是默认标准的分隔符>			 * 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");	}}


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消