标签:Properties setProperty getProperty prop.list prop.load
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");
}
}标签:Properties setProperty getProperty prop.list prop.load
原文地址:http://blog.51cto.com/13634837/2091371