欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-03-25 21:21:03
package seday06; import java.io.Serializable;import java.util.Arrays; /** * @author xingsir * 使用当前类来测试对象流的对象读写操作 * 当前类实例若想被对象流进行读写,那么必须实现接口:java.io.Se ......

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();//关闭

}

}