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陷阱与缺陷的个人知识点摘录
编译过程的一点心得体会: .h文件其实只在预处理的过程用到,用来将类似#include <stdio.h>这样的行展开为具体内容. 那些标准库或者其他库中的函数,是在链接的过程中连接器把相 ...
- Jenkins和Gitblit集成实现提交后自动构建
Gitblit是一个纯Java基于git的解决方案.它属于Apache Allura等伪造软件之一,它将票务系统与web ui结合在一起.我经历了一个设置过程,我想我可以帮助新用户避免痛点. 使用场景 ...
- python 字符串切片知识巩固
切片操作(slice)可以从一个字符串中获取子字符串(字符串的一部分).我们使用一对方括号.起始偏移量start.终止偏移量end 以及可选的步长step 来定义一个分片. 格式: [start:en ...
- 「Vue」Vue cli3中引用mui-ui问题及解决办法
1.引用mui.js无效,top-bar划动,numbox点击无效等问题 解决办法: -main.js中import mui from './lib/mui/js/mui.js' Vue.protot ...
- golang 性能测试pprof
golang 性能测试包是位于 net/http 包下的 pprof,其相关介绍可以参看具体的 官方文档 有关 golang 性能测试使用特别简单,在 main 包中的引包位置直接引入: import ...
- LINUX 线程
1.使用进程技术的优势(1)CPU时分复用,单核心CPU可以实现宏观上的并行(2)实现多任务系统需求(多任务的需求是客观的)2.进程技术的劣势(1)进程间切换开销大(2)进程间通信麻烦而且效率低3.解 ...
- Tomcat假死排查方案
使用Tomcat作为Web服务器的时候偶尔会遇到Tomcat停止响应的情况,通过netstat查看端口情况会发现tomcat的端口出现大量的CLOSE_WAIT,此时Tomcat会停止响应前端请求,同 ...
- 使用spring boot访问mongodb数据库
一. spring boot中传参的方法 1.自动化配置 spring Boot 对于开发人员最大的好处在于可以对 Spring 应用进行自动配置.Spring Boot 会根据应用中声明的第三方依赖 ...
- Redis学习五:Redis的持久化-RDB
RDB(Redis DataBase) 一.是什么 1.概念:在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里 2.执行方式: R ...
- 谁说码农不懂浪漫?js写的'老婆生日快乐'特效
一直被老婆抱怨不懂浪漫,老婆的生日又来了,老婆指着闺蜜空间上贴的老公做的胡萝卜心形浪漫晚餐告诉我:必须送她一份用心的礼物.我绞尽脑汁想出这么一法子,还是得用我们码农的独特方式,经过一天多的努力,终于做 ...