对象流,它们是一对高级流,负责即将java对象与字节之间在读写的过程中进行转换。 * java.io.ObjectOutputStream * java.io.ObjectInputStream
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();//关闭
}
}