java 对象流_java 对象流的简单使用

对象的输入输出流的作用: 用于写入对象 的信息和读取对象的信息。 使得对象持久化。

ObjectInputStream   : 对象输入流

ObjectOutPutStream  :对象输出流

简单的实例

1 importjava.io.File;2 importjava.io.FileInputStream;3 importjava.io.FileOutputStream;4 importjava.io.IOException;5 importjava.io.ObjectInputStream;6 importjava.io.ObjectOutputStream;7 importjava.io.Serializable;8

9 //创建要写入磁盘的类,这个类需要实现接口 Serializable(可系列化的)

10 class Student implementsSerializable{11

12 //在这里保证了serialVersionUID 的唯一性,防止属性变量的临时改变,从而造成写入id与读取id不同

13 private static final long serialVersionUID = 1L;14 int id ; //额外需要添加一个属性

15

16String name ;17 transient String sex; //transient修饰属性,表示暂时的,则这个属性不会被写入磁盘

18 transient intage;19

20 public Student(String name,String sex,intage){21 this.name =name;22 this.sex =sex;23 this.age =age;24}25}26

27

28 public classobjectIO {29

30 /**31 *@paramargs

32 *@throwsIOException

33 *@throwsClassNotFoundException

34*/

35 public static void main(String[] args) throwsIOException, ClassNotFoundException {36 //TODO Auto-generated method stub

37

38createObj();39readObj();40}41

42 //(一)先写入对象

43 public static void createObj() throwsIOException {44 //1.创建目标路径

45 File file = new File("C:\\Users\\bg\\Desktop\\objTest.txt");46 //2.创建流通道

47 FileOutputStream fos = newFileOutputStream(file);48 //3.创建对象输出流

49 ObjectOutputStream objOP = newObjectOutputStream(fos);50 //4.创建类对象,并初始化

51 Student stu = new Student("玛丽苏", "男", 18);52 //5.向目标路径文件写入对象

53objOP.writeObject(stu);54 //6.关闭资源

55objOP.close();56}57

58 //再读取对象

59 public static void readObj() throwsIOException, ClassNotFoundException {60 File file = new File("C:\\Users\\bg\\Desktop\\objTest.txt");61 FileInputStream fis = newFileInputStream(file);62 ObjectInputStream objIP = newObjectInputStream(fis);63 //读取对象数据,需要将对象流强制转换为 要写入对象的类型

64 Student stu =(Student)objIP.readObject();65 System.out.println("\n name:"+stu.name+"\n sex:"+stu.sex+"\n age:"+stu.age);66objIP.close();67}68

69 }

打印效果

name:玛丽苏

sex:null //后面的这连个属性使用了 transient修饰

age:0

用到方法:writeObject(Object o);  //向磁盘写入对象

readObject();  //读取磁盘的对象,注意这里需要强制类型

对象输入输出流的使用注意点:

1.如果想将一个对象写入到磁盘中,那么对象所属的类必须要进行序列化,实现Serializable 接口,Serializable接口没有任何方法 ,是一个标记接口

2.如果对象所属的类的成员变量发生改变,你在读取原来的对象是就会报错,如果想要解决报错,保证serialVersionUID是唯一。

3.如果你不想将某些信息存入到磁盘 就可以同过transient关键字修饰成员变量

4.如果一个类中引用了另外的一个类,那么另外的这个类也要实现Serializable接口。

如果:

b402f1332f2a5e7e7d2cc3e6a70a21b3.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>