Preperties类
特点
1.是Hashtable的子类,map集合中的方法都可以使用
2.没有泛型,都是字符串
3.是一个可以持久化的属性集
4.有和流技术相结合的方法
2.常用方法
load()在输入流中读取键值对
store()把键值对写入输出流中
public static void main(String[] args) throws IOException {
//创建集合
Properties pro=new Properties();
//明确数据源
FileInputStream fis=new FileInputStream("src/com/oracle/demo01/pro.properties");
//将文件中的键值对读取到集合中
pro.load(fis);
System.out.println(pro);
}
public static void main(String[] args) throws IOException {
//创建集合
Properties pro=new Properties();
pro.put("name", "tom");
pro.put("age", "20");
//明确目的地
FileWriter fw=new FileWriter("src/com/oracle/demo01/pro.properties",true);
//将集合中的数据存储到文件中
pro.store(fw, "This is a person");
}
2.序列化流和反序列化流
用于操作对象,把对象写入文件中,在文件中读取对象
3.ObjectOutputStream流
构造方法:ObjectOutputStream(字节输出流对象)
常用方法:writeObject()将指定对象写入文件
4.ObjectInputStream流
构造方法:ObjectOutputStream(字节输入流对象)
常用方法:readObject()读取文件中的对象
public static void main(String[] args) throws IOException {
Person p=new Person("张三",18);
//明确目的地
FileOutputStream fos=new FileOutputStream("/Users/air/io0803/person.txt");
//创建序列化流
ObjectOutputStream oos=new ObjectOutputStream(fos);
//将对象写到文件中
oos.writeObject(p);
//释放资源
oos.close();
}
public static void main(String[] args) throws ClassNotFoundException, IOException {
// 明确数据源
FileInputStream fis = new FileInputStream("/Users/air/io0803/person.txt");
//创建反序列化流
ObjectInputStream ois=new ObjectInputStream(fis);
//读出一个对象
Person p=(Person) ois.readObject();
System.out.println(p);
//释放资源
ois.close();
}
5.序列化接口
当一个对象要能被序列化,这个对象所属的类必须实现Serializable接口。否则会发生异常NotSerializableException异常。
Serializable标记接口。该接口给需要序列化的类,提供了一个序列版本号。
serialVersionUID. 该版本号的目的在于验证序列化的对象和对应类是否版本匹配。
当一个类要背序列化时,要指定一个版本号
private static final long serialVersionUID=123L;
6.transient关键字
当类中的一个属性不想被序列化时,用transient修饰或者静态
private transient String name;

浙公网安备 33010602011771号