一、properties继承了Hashtable
是哈希表的结构
- 是一种对应关系 key— value
- key必须是唯一的,不能重复
- 无序,放入与输出的顺序不一致,不能够通过索引操作map集合中的数据
,也是键值对集合,一般只用来方法字符串的键值对
二、属性文件(配置文件)
- 以.properties 作为后缀名的文件
- 内容格式: key=value 属性名=属性值 如: name=张三 (没有空格,逗号,分号,不要有空行)
- 默认的字符集为ISO-8859-1, 不支持中文的,eclipse会自动转码
三、读取properties
properties文件在src目录下
1.用一个字节流的父类InputStream去接收。用映射调用db.properties文件
private static void getProperties() {
try {
InputStream in= Test.class.getClassLoader().getResourceAsStream("db.properties");
p.load(in);
} catch (Exception e) {
System.out.println("文件加载失败");
}
}
Test.class | 为你的当前类的class字节码文件 |
---|---|
.getClassLoader() | 类加载器 |
getResourceAsStream(“db.properties”) | 获取resource目录下的文件,如果是resource下的子目录,依次加一下路径就可以getResourceAsStream(“properties/jdbc.properties”); |
2.将字节流添加到properties对象
Properties p = new Properties();
p.load(in);
到这就算做好了读取的准备。
四、遍历properties文件
由于properties是继承Hashtable(key和value都不能为null; 同步线程,线程安全,效率较低)所以是无序的,输入输出的顺序不一致,不能通过索引遍历
private static void addUser() {
//用构造器来遍历map集合
//Entry对象包含二个值
Iterator<Entry<Object, Object>> it = p.entrySet().iterator();
while (it.hasNext()) {
Entry<Object, Object> entry = it.next();
String key = (String)entry.getKey();
String value = (String)entry.getValue();
System.out.println("key :" + key);
System.out.println("value :" + value);
User u = new User(key, value);
list.add(u);
}
entrySet() | 获取key-value的集合,这是一个属于集合的方法 |
---|---|
package Test0416;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Properties;
public class Test {
static Properties p = new Properties();
static ArrayList<User> list = new ArrayList<User>();
public static void main(String[] args) {
//加载bd,properties文件
getProperties();
//添加用户
addUser();
//读取list集合
readList();
}
private static void readList() {
for(User u:list){
u.toString();
}
}
private static void addUser() {
Iterator<Entry<Object, Object>> it = p.entrySet().iterator();
while (it.hasNext()) {
Entry<Object, Object> entry = it.next();
String key = (String)entry.getKey();
String value = (String)entry.getValue();
System.out.println("key :" + key);
System.out.println("value :" + value);
User u = new User(key, value);
list.add(u);
}
}
private static void getProperties() {
try {
InputStream in= Test.class.getClassLoader().getResourceAsStream("db.properties");
p.load(in);
} catch (Exception e) {
System.out.println("文件加载失败");
}
}
}