数据流:

DataInputStream,DataOutputStream。可以用于与计算机无关的格式读写java的基本数据类型以及String对象

对象流:

ObjectInputStream,ObjectOutputStream.

序列化:保存内存中对象的“全景图”。

为了实现对象序列化,对应的类必须实现Serializable接口。

Serializable接口中没有定义任何的方法,称之为“标记接口”。

如果加上了一个transient修饰符,该属性的值将不被序列化。

反序列化:使用ObjectInputStream类,将字节序列还原成对象的过程。

 package com.lovo.day2;

 import java.io.IOException;
import java.io.Serializable;
import java.util.Date; public class Student implements Serializable { private static final long serialVersionUID = 4282130869653374904L; private String name;
private int age;
private boolean sex;
private double money;
private Date birth;
private Course course; public Student(String name, int age, boolean sex, double money, Date birth,
Course course) {
super();
this.name = name;
this.age = age;
this.sex = sex;
this.money = money;
this.birth = birth;
this.course = course;
} 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 boolean isSex() {
return sex;
} public void setSex(boolean sex) {
this.sex = sex;
} public double getMoney() {
return money;
} public void setMoney(double money) {
this.money = money;
} public Date getBirth() {
return birth;
} public void setBirth(Date birth) {
this.birth = birth;
} public Course getCourse() {
return course;
} public void setCourse(Course course) {
this.course = course;
} @Override
public String toString() {
return "Student [name=" + name + ", age=" + age + ", sex=" + sex
+ ", money=" + money + ", birth=" + birth + ", course="
+ course + "]";
} /* private void readObject(java.io.ObjectInputStream in) throws IOException,
ClassNotFoundException {
System.out.println("读");
this.name = in.readUTF();
this.age = in.readInt();
this.sex = in.readBoolean();
this.course = (Course) in.readObject();
this.money = in.readDouble();
} private void writeObject(java.io.ObjectOutputStream out) throws IOException {
System.out.println("写");
out.writeUTF(this.name);
out.writeInt(this.age);
out.writeBoolean(this.sex);
out.writeObject(course);
out.writeDouble(this.money);
}
*/
}
 package com.lovo.day2;

 import java.io.Serializable;

 public class Course implements Serializable {

     private static final long serialVersionUID = 1L;

     private int code;
private String name; public int getCode() {
return code;
} public void setCode(int code) {
this.code = code;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Course(int code, String name) {
super();
this.code = code;
this.name = name;
} @Override
public String toString() {
return "Course [code=" + code + ", name=" + name + "]";
}
}
 package com.lovo.day2;

 import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Date; public class ObjectTest { public static void main(String[] args) {
Student stu = new Student("张飞", 18, true, 10.0, new Date(), new Course(
1, "语文"));
Student stu2 = new Student("张飞2", 18, true, 10.0, new Date(), new Course(
2, "数学")); // 序列化
ObjectOutputStream out = null; try {
out = new ObjectOutputStream(
new FileOutputStream("d:\\student.bin"));
out.writeObject(stu);
out.writeObject(stu2);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} // 反序列化
ObjectInputStream in = null; try {
in = new ObjectInputStream(new FileInputStream("d:\\student.bin"));
Student stu1 = (Student) in.readObject();
System.out.println(stu1); System.out.println("*****************"); System.out.println(stu1.getCourse()); System.out.println("#######################################"); Student stu21 = (Student) in.readObject();
System.out.println(stu21); System.out.println("*****************"); System.out.println(stu21.getCourse());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}

JavaI/O系统2的更多相关文章

  1. JavaI/O系统

    I/O:(输入/输出)指的是计算机与外部世界,或者一个与计算机其余部分的接口.它对任何计算机系统都非常关键. Java类库中有大量的类,帮助我们从不同的设备读取数据并保存或输出到不同的设备中. 这些类 ...

  2. JavaI/O 系统

    1.JavaI/O 系统概述 A.  输入输出(I/O):指的是计算机与外部世界,或者一个程序与计算机的其余部分之间的接口 B. 流的概念(流:Stream) 流的基本特性:有数据.有方向 2. 流的 ...

  3. Lucene的入门

    Lucene准备 Lucene可以在官网上下载,我这里已经下载好了,用的是4.10.3版本的, 解压以后的文件为: 如果没有使用maven管理的话,就需要引入这三个jar包,实现lucene功能. 我 ...

  4. JAVA编程不得不看的几本经典书籍

    为了帮助对java编程感兴趣的同学更好.更快的提高编程技术,武汉北大青鸟光谷校区专业老师在此推荐几本学习编程非常有用的书籍,以供大家参考. 入门类 1.<java从入门到精通>(第3版) ...

  5. 学习Java的书籍资料

    对于程序员来说,编程技术至关重要,然而技术的提高不是一蹴而就的,它需要时间的积累和经验的沉淀.因此本文为大家推荐Java学习的书籍,学虽容易,学好不易,且学且珍惜. 基础类.<Java从入门到精 ...

  6. 2012高校GIS论坛

    江苏省会议中心 南京·钟山宾馆(2012年4月21-22日) 以"突破与提升"为主题的"2012高校GIS论坛"将于4月在南京举行,由南京大学和工程中心共同承办 ...

  7. 在Openfire上弄一个简单的推送系统

    推送系统 说是推送系统有点大,其实就是一个消息广播功能吧.作用其实也就是由服务端接收到消息然后推送到订阅的客户端. 思路 对于推送最关键的是服务端向客户端发送数据,客户端向服务端订阅自己想要的消息.这 ...

  8. 数据库优化案例——————某市中心医院HIS系统

    记得在自己学习数据库知识的时候特别喜欢看案例,因为优化的手段是容易掌握的,但是整体的优化思想是很难学会的.这也是为什么自己特别喜欢看案例,今天也开始分享自己做的优化案例. 最近一直很忙,博客产出也少的 ...

  9. ABP文档 - 通知系统

    文档目录 本节内容: 简介 发送模式 通知类型 通知数据 通知重要性 关于通知持久化 订阅通知 发布通知 用户通知管理器 实时通知 客户端 通知存储 通知定义 简介 通知用来告知用户系统里特定的事件发 ...

随机推荐

  1. java反射中的动态代理机制(有实例)

    在学习Spring的时候,我们知道Spring主要有两大思想,一个是IoC,另一个就是AOP,对于IoC,依赖注入就不用多说了,而对于Spring的核心AOP来说,我们不但要知道怎么通过AOP来满足的 ...

  2. 章文嵩博士和他背后的负载均衡(LOAD BANLANCER)帝国

    案首语: 阿里集团技术大牛,@正明,淘宝基础核心软件研发负责人.LVS创始人.阿里云首席科学家章文嵩博士从阿里离职,去追求技术人生另一段历程,让阿里像我一样的很多热爱技术的工程师都有一丝牵动和感触. ...

  3. SSH 安全建议

    当你查看你的 SSH 服务日志,可能你会发现充斥着一些不怀好意的尝试性登录.这里有 5 条常规建议(和一些个别特殊策略)可以让你的 OpenSSH 会话更加安全. 强化密码登录 密码登录很方便,因为你 ...

  4. SQL导入的方法,网上看到的

    -------这是一个新表,准备用来导入的表 CREATE TABLE CSVTable( Name NVARCHAR(MAX), Email NVARCHAR(MAX), Area NVARCHAR ...

  5. C#多线程编程系列(四)- 使用线程池

    目录 1.1 简介 1.2 在线程池中调用委托 1.3 向线程池中放入异步操作 1.4 线程池与并行度 1.5 实现一个取消选项 1.6 在线程池中使用等待事件处理器及超时 1.7 使用计时器 1.8 ...

  6. [UWP]爱恋动漫BT开发小记

    在七月和某个人相识,在七月又和这个人重回陌路,在这个伤感的七月,让我来水一篇博客. 已经很久没有写博客了,最近现在来写一篇,总结一下这个七月. 今年的暑假特别的长,大概六月中旬就考完试了,而开学一直要 ...

  7. Unity里vertexShader里压扁模型来实现比较low的阴影

    只有阴影pass,请自行合并,需要指定高度,忽略深度检测,需要控制好排序,或者去掉忽略,视情况而定,最后我觉得还是shadowmap好 Shader "Custom/MeshShadow&q ...

  8. Android的四大组件学习

    一.Linearlayout  :  线性布局 1. android:orientation="vertical"     //控件的方向控制,vertical : 垂直布局 ,  ...

  9. FunDA(10)- 用户功能函数模式:User Function Model

    前面我们提过:FunDA就像一个管道(PipeLine).管道内流动着一串数据(Data)或者运算指令(Action).管道的源头就是能产生纯数据的数据源(Source),跟着在管道的中间会有一些节点 ...

  10. 【wireshark】开发环境搭建

    1. 引言 本文相关内容可参考Wireshark开发指南第2章”Quick Setup” 要对wireshark代码进行修改,除了下文介绍的lua插件的方式以外,都需要对wirehshark源码进行编 ...