java读写对象流,对象流,它们是一对高级流,负责即将java对象与字节之间在读写的过程中进行转换。 * java.io.ObjectOutputStream * java.io.ObjectInpu...

package seday06;

import java.io.Serializable;

import java.util.Arrays;

/**

* @author xingsir

* 使用当前类来测试对象流的对象读写操作

* 当前类实例若想被对象流进行读写,那么必须实现接口:java.io.Serializable

*/

public class Person implements Serializable {

private static final long serialVersionUID = 1L; //鼠标放到Person位置然后add generate serial version ID生成

private String name;//姓名

private int age;//年龄

private String gender;//性别

/*

* transient关键字

* 被其修饰的属性在该对象进行序列化时值会被忽略。 忽略不必要的属性值可以达到对象序列化时的"瘦身"操作, 减少资源的开销。

*/

private transient String[] otherInfo;

/*

* 右键点-Source-点 -generate constructor using fields,选择要生成的属性

* 这个选项自动生成带参数的 构造函数

*/

public Person(String name, int age, String gender,String[] otherInfo) {

super();

this.name = name;

this.age = age;

this.gender = gender;

this.otherInfo = otherInfo;

}

/*

* 右键点-Source-点 -generate getters and setters,选择要生成的属性

*/

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 String getGender() {

return gender;

}

public void setGender(String gender) {

this.gender = gender;

}

public String[] getOtherInfo() {

return otherInfo;

}

public void setOtherInfo(String[] otherInfo) {

this.otherInfo = otherInfo;

}

public String tosString() {

return name+","+age+","+gender+","+

Arrays.toString(otherInfo);

}

}

//======================================================================

package seday06;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.ObjectOutputStream;

/**

* @author xingsir

* 对象流: 它们是一对高级流,负责即将java对象与字节之间在读写的过程中进行转换。

* java.io.ObjectOutputStream

* java.io.ObjectInputStream

*/

public class OosDemo {

public static void main(String[] args) throws IOException {

/*

*创建一个person_obj.txt文件

* 将一个Person实例写入文件person_obj.txt中

*/

String name="灭霸";

int age=300;

String gender = "男";

String[] otherInfo = {"会弹响指","身材高大","为减轻地球资源做出杰出贡献"};

Person person=new Person(name, age, gender,otherInfo);

System.out.println(person);

FileOutputStream fos=new FileOutputStream("person_obj.txt");

ObjectOutputStream oos =new ObjectOutputStream(fos);

/*

* writeObject方法是ObjectOutputStream提供的方法, 作用是将给定的对象按照其结构转换为一组字节,

* 然后再将字节通过其连接的流写出。实际转换的字节比该对象保存的内容要大,因为还要包含该对象的结构信息等内容。

*/

/*

* 下面写对象时每个流负责的工作分别为:对象流首先将对象按照其结构转换为一组字节, 这个过程称为:对象序列化

*

* 序列化后的字节在经过文件输出流最终写入了文件(写入文件就等于写入了磁盘做长久保存,关机数据

* 也不会丢失),而这个过程称为:数据持久化

*/

oos.writeObject(person);

System.out.println("写出完毕成");

oos.close();

}

}

//====================================================================================

package seday06;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.ObjectInputStream;

/**

* @author xingsir

* 对象输入流 ObjectInputStream

*/

public class OiSDemo {

public static void main(String[] args) throws IOException,ClassNotFoundException{

//读取文件中字节

FileInputStream fis=new FileInputStream("person_Obj.txt");

//对象输入流

ObjectInputStream ois= new ObjectInputStream(fis);

// readObject的工作进行对象的反序列化

Person person =(Person)ois.readObject();//强制转换类型

System.out.println(person);//打印

ois.close();//关闭

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值