流-对象流

对象流:很明显就是操作对象的,一般特征就是会有一个对象类例如 Student People
ObjectInputStream
ObjectOutputStream

一点小解释:因为我们不可能一条一条信息的读,因此把student对象放到了集合arraylist里面

下面例如代码:
一个Student学生类:

/**
*

  • @author dch

*/
//定义一个学生对象类
public class Student implements Serializable{

//编号
private int id;
//姓名
private String name;
//年级
private int age;

//无参构造器
public Student(){
	
}

//有参构造器
public Student(int id,String name, int age ){
	this.id = id;
	this.name = name;
	this.age = age;
}

//设置get/set方法
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 getAge() {
	return age;
}

public void setAge(int age) {
	this.age = age;
}

//重写toString方法
@Override
public String toString() {
	return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
}

}

/**
*

  • @author dch

*/
//对象的序列化和反序列化
public class TestObject {

/**
 *   在之前可以对字节操作(InputStream/OutputStream)
 * 	 字符操作(Reader/Writer)
 * 	 java的数据类型操作(DataInputStream/DataOutputStream)
 * 
 * 序列化:对java对象(Student的对象,集合的对象等)的操作
 * 		
 * 		序列化:将内存中的对象(电脑控制台)保存到磁盘的文件中,(写出 output)
 * 	                       或者在网络传输中,将对象A通过序列化从服务单传输到客户单独
 * 	                       实现序列化的类: ObjectOutputStream
 * 
 * 反序列:将磁盘文件的数据读入到内存的过程,(也就是从文件读到电脑控制器中) 读入Input
 * 				实现反序列化的类: ObjectInputStream
 * @param args
 * @throws Exception 
 */


public static void main(String[] args) throws Exception {
	
	//writeStudent();
	readStudent();
	
}
public static void writeStudent() throws Exception{
	
			//写出文件.从电脑控制台 到  文件夹
			
			List<Student> arraylist = new ArrayList<Student>();
			Student stu1 = new Student(001, "杜", 22);
			Student stu2 = new Student(002, "李", 21);
			arraylist.add(stu1);
			arraylist.add(stu2);
	
			OutputStream os = new FileOutputStream("d://测试文件夹/aa/aa.txt");
			//对象的序列化
			ObjectOutputStream  oos = new ObjectOutputStream(os);
			
			
			//创建对
			oos.writeObject(arraylist);
			
			//记着这是规则,流 正着写,反着关.
			System.out.println("序列化完成");
			oos.close();
			os.close();	
	
}


public static void readStudent() throws Exception{
	
	List<Student> arraylist = new ArrayList<Student>();
	Student stu1 = new Student(001, "杜", 22);
	Student stu2 = new Student(002, "李", 21);
	arraylist.add(stu1);
	arraylist.add(stu2);
	
	//反序列化  将文件中的对象 读入到   内存中   (也就是从文件到电脑控制器)
			//输入流
			InputStream is = new FileInputStream("d://测试文件夹/aa/aa.txt");
			//对象的反序列
			ObjectInputStream ois = new ObjectInputStream(is);
			
			/*Object obj = ois.readObject();
			//判断当前读入的对象 是否为Student
			if(obj instanceof Student){
				Student stu=(Student)obj;
				System.out.println(stu);
			}*/
			
			Object obj = ois.readObject();
			if(obj instanceof List){
				arraylist = (List<Student>)obj;
				System.out.println(arraylist);
			}
			System.out.println("文件到电脑控制台输出成功");
			ois.close();
			is.close();
			
			//存一个对象的读写
			//存多个对象的读写,通过集合
	
}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值