Properties类
Properties类介绍
特点:
1、Hashtable的子类,map集合中的方法都可以用。
2、该集合没有泛型。键值都是字符串。
3、它是一个可以持久化的属性集。键值可以存储到集合中,也可以存储到持久化的设备(硬盘、U盘、光盘)上。键值的来源也可以是持久化的设备。
4、有和流技术相结合的方法。
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.util.Properties;
import java.util.Set;
//键值对文件
public class Demo08 {
public static void main(String[] args) throws IOException {
method1();
method2();
method3();
}
public static void method1(){
Properties pro=new Properties();
//往集合中存储键值对
pro.setProperty("b", "1");
pro.setProperty("a", "2");
//取值
System.out.println(pro.getProperty("a"));
//相当于keySet方法
Set<String> set=pro.stringPropertyNames();
for(String s:set){
System.out.println(s+pro.getProperty(s));
}
}
public static void method2() throws IOException{
Properties pro=new Properties();
FileReader fr=new FileReader("E:\java\wojiubu.properties");
pro.load(fr);//从文件中读取键值对
System.out.println(pro);
}
public static void method3() throws IOException{
Properties pro=new Properties();
pro.setProperty("a", "1");
pro.setProperty("b", "2");
pro.setProperty("c", "3");
pro.setProperty("c", "4");
//明确目的地
FileOutputStream fos=new FileOutputStream("E:\java\wojiubu.properties");
pro.store(fos, "hehe");
}
}
序列化流与反序列化流
对象序列化流ObjectOutputStream


import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
//写入文件
public class Demo01 {
public static void main(String[] args) throws IOException, ClassNotFoundException {
//method1();
method2();
}
public static void method1() throws IOException{
//序列化
Person p=new Person("alai",18);
//明确目的地
FileOutputStream fos=new FileOutputStream("E:\java\person.txt");
//创建序列化流
ObjectOutputStream oos=new ObjectOutputStream(fos);
//向文件写入对象
oos.writeObject(p);
oos.close();
}
对象反序列化流ObjectInputStream


//读取文件
public static void method2() throws ClassNotFoundException, IOException{
//明确数据源
FileInputStream fis=new FileInputStream("E:\java\person.txt");
//创建反序列化流
ObjectInputStream ois=new ObjectInputStream(fis);
Object obj=ois.readObject();
Person p=(Person)obj;
System.out.println(p);
ois.close();
}
}
瞬态关键字transient
import java.io.Serializable;
public class Person implements Serializable{
private String name;
//瞬态关键字 transient
private transient int age; //添加瞬态关键字的属性不会被序列化
//自定义的序列化号
private static final long serialVersionUID = 42L;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
public Person(){
}
}