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 ...
随机推荐
- Docker 及 nvidia-docker 使用
Docker 基本用法 1. 安装社区版docker-ce 及 nvidia-docker2 插件 通过官网介绍的软件源的方式安装. 如果要安装nvidia-docker,由于其需要与docker-c ...
- pytorch文档阅读(一)
本章主要针对pytorch0.4.0英文文档的前两节,顺序可能有些不一样: torch torch.Tensor 张量 Tensors Data type CPU tensor GPU tensor ...
- C++析构函数的自动调用(用于父类指针指向子类对象,内存泄漏问题)
class A {public:A() { printf("A \n"); }~A() { printf(" ~A \n"); } // 这里不管写不写virt ...
- Java入门:基础算法之计算园的面积
本部分内容介绍如何使用Java计算圆的周长和面积.分两种方法来实现: 1)圆的半径由用户输入 2)圆的半径由程序指定 代码1: /** * @作者: 理工云课堂 * @描述: 用户输入圆的半径,程序结 ...
- python中几种常用的数据类型
1.字典 字典的创建: dict1=dict((('name','PIG'),)),其中第一层()代表里面的内容是dict函数的输入参数.第二层和第三层代表字典中的各元素,也就是key和value组合 ...
- Hadoop生态圈-phoenix(HBase)的索引配置
Hadoop生态圈-phoenix(HBase)的索引配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 创建索引是为了优化查询,我们可以在phoenix上配置索引方式. 一.修改 ...
- linux下yum错误:[Errno 14] problem making ssl connection Trying other mirror.
今天是要yum命令安装EPEL仓库后 yum install epel-release 突然发现yum安装其他的软件出错. 错误:[Errno 14] problem making ssl conne ...
- NOIP2012 提高组 Day 1
期望得分:100+100+70=270 实际得分:100+50+70=220 T2 没有底 最后剩余时间来不及打高精.思路出现错误 T1 Vigenère 密码 题目描述 16 世纪法国外交家 Bla ...
- 机器学习算法整理(一)线性回归与梯度下降 python实现
回归算法 以下均为自己看视频做的笔记,自用,侵删! 一.线性回归 θ是bias(偏置项) 线性回归算法代码实现 # coding: utf-8 get_ipython().run_line_mag ...
- django project 的快速构建
2003年,堪萨斯(Kansas)州 Lawrence 城中的一个 网络开发小组 ——World Online 小组,为了方便制作维护当地的几个新闻站点(一般要求几天或者几小时内被建立),Adrian ...