雇员类

package io;

import java.io.Serializable;

@SuppressWarnings("serial")
public class Emp implements Serializable{
private Integer empno;
private String ename;
private String job;
private double comm;
private double sal; public Integer getEmpno() {
return empno;
} public void setEmpno(Integer empno) {
this.empno = empno;
} public String getEname() {
return ename;
} public void setEname(String ename) {
this.ename = ename;
} public String getJob() {
return job;
} public void setJob(String job) {
this.job = job;
} public double getComm() {
return comm;
} public void setComm(double comm) {
this.comm = comm;
} public double getSal() {
return sal;
} public void setSal(double sal) {
this.sal = sal;
} @Override
public String toString() {
return "Emp [empno=" + empno + ", ename=" + ename + ", job=" + job
+ ", comm=" + comm + ", sal=" + sal + "]";
}
}

对象操作工具类

package io;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream; public class FileOperate {
private File file = null; //通过外部设置文件路径 public FileOperate(File file){ //可以直接接收File对象
this.file = file;
}
public FileOperate (String path){
this(new File(path));
} /**
*
* 保存对象信息
*
* @param obj
* @throws Exception
*/
public void save(Object obj) throws Exception{
ObjectOutputStream oos = null;
try{
if(!this.file.getParentFile().exists()){
this.file.getParentFile().mkdirs();
}
oos = new ObjectOutputStream(new FileOutputStream(this.file));
oos.writeObject(obj);
}catch(Exception e){
throw e;
}finally{
if(oos != null){
oos.close();
}
}
} /**
*
* 输出对象信息
*
* @return
* @throws Exception
*/
public Object load() throws Exception{
ObjectInputStream ois = null;
try{
ois = new ObjectInputStream(new FileInputStream(this.file));
return ois.readObject();
}catch(Exception e){
throw e;
}finally{
if(ois != null){
ois.close();
}
}
}
}

菜单类

package io;

import java.io.File;

public class EmpMenu {

    private static final String PATH = "d:" + File.separator + "mydemo";

    public void init(){ //对象初始化
Emp vo = new Emp();
vo.setEmpno(7369);
vo.setEname("SMITH");
vo.setJob("CLERK");
vo.setSal(800.0);
vo.setComm(0.0);
FileOperate fo = new FileOperate(PATH);
try {
fo.save(vo);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} public void read(){ //读取对象信息
FileOperate fo = new FileOperate(PATH);
try{
Emp emp = (Emp)fo.load();
System.out.println(emp); }catch(Exception e){
e.printStackTrace();
}
} public void change(){ //保存对象信息
FileOperate fo = new FileOperate(PATH);
try{
Emp emp = (Emp)fo.load();
emp.setEname("张三");
emp.setSal(1000.0);
System.out.println(emp);
}catch(Exception e){
e.printStackTrace();
}
}
}

测试类

package io;

public class TestEmpMenu {

    public static void main(String[] args) {
EmpMenu em = new EmpMenu();
//em.init();
em.change();
em.read();
}
}

ObjectInputStream与ObjectOutputStream的更多相关文章

  1. serialVersionUID, ObjectInputStream与ObjectOutputStream类,Serializable接口,serialVersionUID的作用和用法

    ObjectInputStream与ObjectOutputStream类所读写的对象必须实现Serializable接口,对象中的transient和static类型成员变量不会被读取和写入 Ser ...

  2. 使用ObjectInputStream和ObjectOutputStream注意问题

    1.对象序列化,类实现Serializable接口 不需要序列化的属性,使用transient声明 2.使用套接字流在主机之间传递对象注意问题: 学习自:Socket同时使用ObjectInputSt ...

  3. Java-IO之对象输入流输出流(ObjectInputStream和ObjectOutputStream)

    ObjectInputStream和ObjectOutputStream的作用是对基本数据和对象进行序列化操作支持.创建文件输出流对应的ObjectOutputStream对象,该ObjectOutp ...

  4. [九]JavaIO之ObjectInputStream 和 ObjectOutputStream

    序列化 序列化是指把Java对象保存为二进制字节码的过程,Java反序列化是指把二进制码重新转换成Java对象的过程 序列化是一种轻量级的持久化,对象都是存活在内存中的,当JVM运行结束,对象便不存在 ...

  5. java io系列05之 ObjectInputStream 和 ObjectOutputStream

    本章,我们学习ObjectInputStream 和 ObjectOutputStream ObjectInputStream 和 ObjectOutputStream 介绍 ObjectInputS ...

  6. Java之IO(七)ObjectInputStream和ObjectOutputStream

    转载请注明源出处:http://www.cnblogs.com/lighten/p/7003536.html 1.前言 本章介绍Java字节流中重要的成员,对象流ObjectInputStream和O ...

  7. ObjectInputStream与ObjectOutputStream类实现对象的存取

    1. ObjectInputStream与ObjectOutputStream类所读写的对象必须实现Serializable接口,对象中的transient和static类型成员变量不会被读取和写入 ...

  8. IO操作之ObjectInputStream与ObjectOutputStream

    之前写过DataInputStream和DataOutputStream,使用这两个类可以对java基本数据类型进行序列化和反序列化. 本篇再来两个新东西:ObjectInputStream,Obje ...

  9. Java IO: 序列化与ObjectInputStream、ObjectOutputStream

    作者:Jakob Jenkov  译者: 李璟(jlee381344197@gmail.com) 本小节会简要概括Java IO中的序列化以及涉及到的流,主要包括ObjectInputStream和O ...

  10. Java IO(六) ObjectInputStream 和 ObjectOutputStream

    Java IO(六) ObjectInputStream 和 ObjectOutputStream 一.介绍 对于对象数据的处理,Java IO 提供了 ObjectInputStream 和 Obj ...

随机推荐

  1. C++下实现同接口下多个类作为参数的调用和传参

    /* 实现同接口下不同类的对象的转移 定义类的接口 定义多个继承该接口的类 定义管理类,把接口当作类型, 传入该接口下各种类的对象,进行操作 */ #include<iostream> # ...

  2. 在Ubuntu16.04上安装virtualbox后无法装载vboxdrv模块

    首先按照:http://blog.csdn.net/ipsecvpn/article/details/52175279 这个网址上的教程安装, 安装完成后报错:大体意思就是vboxdrv没有被内核装载 ...

  3. UVA12167 Proving Equivalences

    UVA12167 Proving Equivalences 题意翻译 题目描述 在数学中,我们常常需要完成若干命题的等价性证明. 例如:有4个命题a,b,c,d,要证明他们是等价的,我们需要证明a&l ...

  4. Shell记录-Shell命令(其他)

    top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器. .命令格式 top [参数] Shell 2.命令功能 显示当前系统正在执行的 ...

  5. js+css3实现旋转效果

    我的前面一张文章实现了用css3制作旋转的效果,现在呢,我换另外一种方法来实现.就是使用js结合css3的方法来实现的.下面我就先上图给大家看看效果吧 下面呢我先放上我的css代码,代码很简单: .o ...

  6. bzoj千题计划146:bzoj3295: [Cqoi2011]动态逆序对

    http://www.lydsy.com/JudgeOnline/problem.php?id=3295 正着删除看做倒着添加 对答案有贡献的数对满足以下3个条件: 出现时间:i<=j 权值大小 ...

  7. bzoj千题计划132:bzoj1189: [HNOI2007]紧急疏散evacuate

    http://www.lydsy.com/JudgeOnline/problem.php?id=1189 二分答案 源点向人连边,流量为1 门拆为mid个点,同一个门的第j个点向第j+1个点连边,流量 ...

  8. 京东全链路压测军演系统(ForceBot)架构解密

    摘要:全链路压测是应对电商大促容量规划最有效的手段,如何有效进行容量规划是其中的架构关键问题.京东在全链路压测方面做过多年尝试,本文转载京东商城基础平台技术专家文章,介绍其最新的自动化压测 Force ...

  9. nodejs使用记录

    安装 下载64or32的安装程序,狂点下一步,无脑安装.然后检查一下: npm 使用npm -v命令检查npm是否可用 然后我们就可以使用npm了,npm语法如下: npm install <M ...

  10. sql 存储过程导出指定数据到.txt文件(定时)

    需求:每天生成一份txt文件数据,供第三方通过http方式调用 方法: 1.新建存储过程: USE [LocojoyMicroMessage] GO /****** Object: StoredPro ...