数据流:

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 IO流详尽解析(转)

    流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

  2. Python学习-30.Python中的元组(tuple)

    元组使用()定义,元组一旦定义就无法修改. 元组的索引方式同列表,也是使用[]. 元组也可以进行切片操作,使用方式同列表一样. 可以说,一个没法修改的列表就是元组. 在没有修改操作的情况下,应尽可能使 ...

  3. ActiveMq 总结(二)

    4.2.6 MessageConsumer MessageConsumer是一个由Session创建的对象,用来从Destination接收消息. 4.2.6.1 创建MessageConsumer ...

  4. .NET高级代码审计(第一课)XmlSerializer反序列化漏洞

    0X00 前言 在.NET 框架中的 XmlSerializer 类是一种很棒的工具,它是将高度结构化的 XML 数据映射为 .NET 对象.XmlSerializer类在程序中通过单个 API 调用 ...

  5. C# 获取每一个像素点的RGB

    int x, y; x = e.X; y = e.Y; Color pixel = MyImage.GetPixel(x, y); byte R = pixel.R; byte G = pixel.G ...

  6. MySQL使用 IN 查询取出数据排序问题(与in排序相同、不排序)

    MySQL使用 IN 查询取出数据排序问题(与in排序相同) 今天在项目中遇到一个问题,就是做一个最近浏览的功能,但是功能做出来了,取出数据时候要用到类似这么一条带in查询的sql语句, select ...

  7. Python 获取秒级时间戳与毫秒级时间戳

    原文:Python获取秒级时间戳与毫秒级时间戳 1.获取秒级时间戳与毫秒级时间戳 import time import datetime t = time.time() print (t) #原始时间 ...

  8. 《Python黑帽子:黑客与渗透测试编程之道》 Scapy:网络的掌控者

    窃取email认证: 测试代码: #!/usr/bin/python #coding=utf-8 from scapy.all import * #数据包回调函数 def packet_callbac ...

  9. Java的HashMap

    FAQ: 为什么要有HashMap? 答:我非常期待能在Java 中使用Hash表 这种数据结构 ,因为它的快速存取特性. Hash表 和HashMap的关系? 答:Hash表 是一种逻辑数据结构,H ...

  10. 程序猿的日常——Java基础之抽象类与接口、枚举、泛型

    再次回顾这些基础内容,发现自己理解的又多了一点.对于一些之前很模糊的概念,渐渐的清晰起来. 抽象类与接口 抽象类通常是描述一些对象的通用方法和属性,并且默认实现一些功能,它不能被实例化.接口仅仅是描述 ...