ObjectInputStream与ObjectOutputStream
雇员类
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的更多相关文章
- serialVersionUID, ObjectInputStream与ObjectOutputStream类,Serializable接口,serialVersionUID的作用和用法
ObjectInputStream与ObjectOutputStream类所读写的对象必须实现Serializable接口,对象中的transient和static类型成员变量不会被读取和写入 Ser ...
- 使用ObjectInputStream和ObjectOutputStream注意问题
1.对象序列化,类实现Serializable接口 不需要序列化的属性,使用transient声明 2.使用套接字流在主机之间传递对象注意问题: 学习自:Socket同时使用ObjectInputSt ...
- Java-IO之对象输入流输出流(ObjectInputStream和ObjectOutputStream)
ObjectInputStream和ObjectOutputStream的作用是对基本数据和对象进行序列化操作支持.创建文件输出流对应的ObjectOutputStream对象,该ObjectOutp ...
- [九]JavaIO之ObjectInputStream 和 ObjectOutputStream
序列化 序列化是指把Java对象保存为二进制字节码的过程,Java反序列化是指把二进制码重新转换成Java对象的过程 序列化是一种轻量级的持久化,对象都是存活在内存中的,当JVM运行结束,对象便不存在 ...
- java io系列05之 ObjectInputStream 和 ObjectOutputStream
本章,我们学习ObjectInputStream 和 ObjectOutputStream ObjectInputStream 和 ObjectOutputStream 介绍 ObjectInputS ...
- Java之IO(七)ObjectInputStream和ObjectOutputStream
转载请注明源出处:http://www.cnblogs.com/lighten/p/7003536.html 1.前言 本章介绍Java字节流中重要的成员,对象流ObjectInputStream和O ...
- ObjectInputStream与ObjectOutputStream类实现对象的存取
1. ObjectInputStream与ObjectOutputStream类所读写的对象必须实现Serializable接口,对象中的transient和static类型成员变量不会被读取和写入 ...
- IO操作之ObjectInputStream与ObjectOutputStream
之前写过DataInputStream和DataOutputStream,使用这两个类可以对java基本数据类型进行序列化和反序列化. 本篇再来两个新东西:ObjectInputStream,Obje ...
- Java IO: 序列化与ObjectInputStream、ObjectOutputStream
作者:Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) 本小节会简要概括Java IO中的序列化以及涉及到的流,主要包括ObjectInputStream和O ...
- Java IO(六) ObjectInputStream 和 ObjectOutputStream
Java IO(六) ObjectInputStream 和 ObjectOutputStream 一.介绍 对于对象数据的处理,Java IO 提供了 ObjectInputStream 和 Obj ...
随机推荐
- C++下实现同接口下多个类作为参数的调用和传参
/* 实现同接口下不同类的对象的转移 定义类的接口 定义多个继承该接口的类 定义管理类,把接口当作类型, 传入该接口下各种类的对象,进行操作 */ #include<iostream> # ...
- 在Ubuntu16.04上安装virtualbox后无法装载vboxdrv模块
首先按照:http://blog.csdn.net/ipsecvpn/article/details/52175279 这个网址上的教程安装, 安装完成后报错:大体意思就是vboxdrv没有被内核装载 ...
- UVA12167 Proving Equivalences
UVA12167 Proving Equivalences 题意翻译 题目描述 在数学中,我们常常需要完成若干命题的等价性证明. 例如:有4个命题a,b,c,d,要证明他们是等价的,我们需要证明a&l ...
- Shell记录-Shell命令(其他)
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器. .命令格式 top [参数] Shell 2.命令功能 显示当前系统正在执行的 ...
- js+css3实现旋转效果
我的前面一张文章实现了用css3制作旋转的效果,现在呢,我换另外一种方法来实现.就是使用js结合css3的方法来实现的.下面我就先上图给大家看看效果吧 下面呢我先放上我的css代码,代码很简单: .o ...
- bzoj千题计划146:bzoj3295: [Cqoi2011]动态逆序对
http://www.lydsy.com/JudgeOnline/problem.php?id=3295 正着删除看做倒着添加 对答案有贡献的数对满足以下3个条件: 出现时间:i<=j 权值大小 ...
- bzoj千题计划132:bzoj1189: [HNOI2007]紧急疏散evacuate
http://www.lydsy.com/JudgeOnline/problem.php?id=1189 二分答案 源点向人连边,流量为1 门拆为mid个点,同一个门的第j个点向第j+1个点连边,流量 ...
- 京东全链路压测军演系统(ForceBot)架构解密
摘要:全链路压测是应对电商大促容量规划最有效的手段,如何有效进行容量规划是其中的架构关键问题.京东在全链路压测方面做过多年尝试,本文转载京东商城基础平台技术专家文章,介绍其最新的自动化压测 Force ...
- nodejs使用记录
安装 下载64or32的安装程序,狂点下一步,无脑安装.然后检查一下: npm 使用npm -v命令检查npm是否可用 然后我们就可以使用npm了,npm语法如下: npm install <M ...
- sql 存储过程导出指定数据到.txt文件(定时)
需求:每天生成一份txt文件数据,供第三方通过http方式调用 方法: 1.新建存储过程: USE [LocojoyMicroMessage] GO /****** Object: StoredPro ...