transient 暂态

1 . 暂态:(transient)当对象输出流往文件写入对象,此对象则不会保留属性值,为默认值.
2 . 序列化的版本号

 private static final long serialVersionUID = 1L;

3 .当使用对象输出流向文件写入数据的时候,如果写入的是字符串,则读取的时候要严格按照写入顺序进行读取.写入的对象用存进类对象,写入的字符串读出来存进字符串.要对应
4 .

Student类

package com.qf.demo;

import java.io.Serializable;

public class Student 
implements Serializable// 实现序列化的就接口 , 就不会报 not Serializable Exception
{

    /**
     * 序列化的版本号
     */
    private static final long serialVersionUID = 1L;

    private int id;
    private  String   name;
    private transient int grade;// transient   暂态     当用对象输出流  写对象   此属性  则不会保存 属性值
    static int classNumber;
    public Student(int id, String name, int grade,int classNumber) {
        super();
        this.id = id;
        this.name = name;
        this.grade = grade;
        this.classNumber = classNumber;
    }
    public Student() {
        super();
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getGrade() {
        return grade;
    }
    public void setGrade(int grade) {
        this.grade = grade;
    }

    @Override
    public String toString() {
        return "Student [id=" + id + ", name=" + name + ", grade=" + grade + ",classNumber = "+classNumber+"]";
    }
    public void show(){
        System.out.println(id+" "+name+" "+grade);
    }

}
package com.qf.demo;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Arrays;
/**
 * objectoutputstream 可以写任意类型对象 
 *  
 * 读取过程一定要严格按照写入的顺序读取
 * @author Administrator
 *
 */
public class Test {

    public static void main(String[] args) {
        Student student = new Student(1, "zhagnsan", 30,1);
        Student student2 = new Student(2, "zhagnsan2", 40,3);
        Student student3 = new Student(3, "zhagnsan3", 50,5);
        Student student4 = new Student(4, "zhagnsan4", 60,7);

        // 要存储  
//      因为要存储的是对象 , 所以用对象流
        try {
            ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("students.txt")));
           // 要通过  oos 把对象写到 students.txt里面
            // 用对象流 写 对象    对象必须被序列化了

            oos.writeObject(student);
            oos.writeBytes("abcde");
            oos.writeObject(student2);
            oos.writeObject(student3);
            oos.writeObject(student4);
            oos.flush();


            ObjectInputStream ois = new ObjectInputStream(new FileInputStream(new File("students.txt")));

            Object object = ois.readObject();// 读取时按照存入的顺序读取的
            System.out.println(object);

            byte[] buf = new byte[5];
            ois.read(buf, 0, buf.length);// 必须先把 String 读取出来以后  才能载接着读  下一个stuent对象
            System.out.println(Arrays.toString(buf));

            Object object2 = ois.readObject();

            if(object2 instanceof Student){
                Student student5 = (Student) object2;
                System.out.println(student5);
            }


        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值