序列化与Properties类

序列化和反序列化

​ 是对象到文件或者文件到对象的转换形式(以字节转换)

序列化流ObjectOuputStream

反序列化是把文件中的一个对象数据,以字节的形式读取出来,转成对象,存到内存中。

使用场景:当在网络之间需要传输对象时。

1.序列化流ObjectOuputStream

1.被序列化的类需要实现Serializable接口

2.并且给该类添加一个标记id

3.使用ObjectOuputStream的writeObject方法进行序列化。

	//实现Serivalizble接口
	public class Person  implements Serializable {
        //创建一个序列化版本标记
    	private static final long serivalVersionUID = 1L;
	}
------------------------------------------------------------------

		//创建一个Person对象
        Person p = new Person();
        //创建一个OutputStream流
        OutputStream os = new FileOutputStream("a.txt");
        //创建一个ObjectOutputStream对象,将os传入
        ObjectOutputStream oos = new ObjectOutputStream(os);
        //将对象写入文件
        oos.writeObject(p);
		oos.close();
		os.close();
反序列化流ObjectInputStream
		//创建一个InputStream流
        InputStream is = new FileInputStream("a.txt");
        //创建反序列化ObjectInputStream流,并传入fis
        ObjectInputStream ois = new ObjectInputStream(is);
        //调用反序列化方法
        Person  p =(Person)ois.readObject();
        ois.close();
        is.close();
瞬态关键字

transient写在属性前,该属性不会被序列化。

打印流PrintWriter/PrintStream

​ 是用来打印数据的,可以把数据打印到控制台或文件中。

		//创建一个FileWriter对象
        FileWriter fw = new FileWriter("a.txt");
        //创建一个PrintWriter对象并且传入一个Writer对象
        PrintWriter pw = new PrintWriter(fw);
        pw.print("异常信息");
Properties类

是一个持久的属性集,可以从流中加载或保存。

​ 1.Hashtable的子类.

​ 2.该集合没有泛型

​ 3.是一个可持久化的属性集

		//创建Properties对象,存储从文件中读取的键值对
        Properties pro = new Properties();
        FileInputStream fis = new FileInputStream("a.properties");
        //调用加载方法,传入一个InputStream流
        pro.load(fis);
        //获取文件中对应key的属性值
        pro.getProperty("username");
		//向集合中添加键值对
        pro.setProperty("driverClass","com.mysql.jdbc.Driver");
		//遍历集合
        Set<Object> objList = pro.keySet();
        for (Object obj:objList){
            String str = (String)obj;
            System.out.println(str+pro.getProperty(str));
        }

		 //将Properties中的键值对存到文件中
        OutputStream os = new FileOutputStream("a.properties");
        pro.store(os,"这是备注");
        os.close();
        fis.close();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值