● 如何将一个Java对象序列化到文件里

  使用输入输出流,,一个是ObjectOutputStream 对象,ObjectOutputStream 负责向指定的流中写入序列化的对象。当从文件中读取序列化数据时,主要需要两个对象,一个是FileInputStream ,一个是ObjectInputStream 对象,ObjectInputStream 负责从指定流中读取序列化数据并还原成序列化前得对象。另外,序列化的读取数据与写入的顺序相同,比如我们序列化时先写入数据A ,再写入B ,最后写入C ;那么我们再读取数据的时候,读取到的第一个数据为A ,读取到的第二个数据为B ,最后读取到的数据为C ,即:先写入先读取的原则。

package com.genersoft.enetbank.settlement.pubbean;

import org.loushang.next.dao.Column;
import org.loushang.next.dao.Table;
import org.loushang.next.dao.Transient;
import org.loushang.next.data.Rule;
import org.loushang.next.data.StatefulDatabean; import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map; /**
* <p>Create Date: 2018-2-27</p>
* <p>Copyright : Genersoft Java Group(c)</p>
* ************************************************************/
@Table(tableName = "EB_BATCH_PAY", keyFields = "APPLY_ID")
public class BatchPay extends StatefulDatabean implements Serializable { //审批状态
public static final String ADV_DRAW_STATUS_SAVE = "01"; // 申请
public static final String ADV_DRAW_STATUS_SUBMIT = "02"; // 审批中
public static final String ADV_DRAW_STATUS_CHECK_RETURN = "04"; // 审批退回
public static final String ADV_DRAW_STATUS_ABANDONED = "09"; // 作废 public static final String ADV_DRAW_STATUS_REFUSED = "07"; // 财司已拒绝
public static final String ADV_DRAW_STATUS_CHECKED = "05"; // 网银到柜面后落地未受理:财司受理中
public static final String ADV_DRAW_STATUS_INPROCESSING = "11"; //财司已受理(柜面审批及发送银行过程都为此状态) public static final String BILL_STATUS_GMPAYDONE = "08"; // 已支付
public static final String BILL_STATUS_GMPAYBACK = "12"; // 支付失败退回 /*
申请内码[YYYYMMDD+12位流水号]
*/
@Rule(value = "require")
@Column(name = "APPLY_ID")
private String applyId; /*
付款批号[预留
]
*/
@Column(name = "BATCH_CODE")
private String batchCode; /*
申请编号[]
*/
@Column(name = "BZNS_CODE")
private String bznsCode; /*
客户编号[]
*/
@Column(name = "CUST_CODE")
private String custCode; /*
业务类型[对私批量业务类型
]
*/
@Column(name = "BZNS_TYPE")
private String bznsType; /*
申请来源[申请来源:1-Excel导入、2-外部申请
]
*/
@Column(name = "APP_SOURCE")
private String appSource; /*
急缓标志[【客户选择,用以匹配发送方式,0-普通;1-加急】
]
*/
@Column(name = "FAST_FLAG")
private String fastFlag; /*
所属机构[目前默认为客户账户的机构
]
*/
@Column(name = "ORG_ID")
private String orgId; /*
所属机构名称[目前默认为客户账户的机构
]
*/
@Transient
private String custName; /*
组织名称
]
*/
@Transient
private String orgName; /*
客户账户编号[]
*/
@Column(name = "CUST_ACC_CODE")
private String custAccCode; /*
客户账户名称[冗余
]
*/
@Column(name = "CUST_ACC_NAME")
private String custAccName; /*
客户银行账号[]
*/
@Column(name = "CUST_BANK_ACC")
private String custBankAcc; /*
币种[]
*/
@Column(name = "CURCD")
private String curcd; /*
应付金额[]
*/
@Column(name = "PAY_AMT")
private BigDecimal payAmt; /*
实付金额[]
*/
@Column(name = "PAID_AMT")
private BigDecimal paidAmt; /*
汇率[]
*/
@Column(name = "EXCHANGE_RATE")
private BigDecimal exchangeRate; /*
总笔数[
]
*/
@Column(name = "TOTAL_NUM")
private int totalNum; /*
成功笔数[]
*/
@Column(name = "SUS_NUM")
private int susNum; /*
失败笔数[]
*/
@Column(name = "FAIL_NUM")
private int failNum; /*
付款账户[]
*/
@Column(name = "PAY_ACC")
private String payAcc; /*
收支项目[预留
]
*/
@Column(name = "PROJECT_BUDGET")
private String projectBudget; /*
资金计划[预留
]
*/
@Column(name = "BUDGET_PLAN")
private String budgetPlan; /*
用途
用途[]
*/
@Column(name = "REMARK")
private String remark; /*
单据状态["00申请/待提交、01审批中、02审批退回、10受理中、11已受理、12财司退回
20已办结、30已作废"
]
*/
@Column(name = "BILL_STATUS")
private String billStatus; /*
经办人[]
*/
@Column(name = "OPERATOR")
private String operator; /*
经办日期[]
*/
@Column(name = "OPERATE_DATE")
private String operateDate; /*
柜面退回人[]
*/
@Column(name = "BACKER")
private String backer; /*
柜面退回日期[]
*/
@Column(name = "BACK_DATE")
private String backDate; /*
柜面退回原因[]
*/
@Column(name = "BACK_REASON")
private String backReason; /*
对应柜台业务单号[]
*/
@Column(name = "COUNTER_BILL_CODE")
private String counterBillCode; /*
时间戳[]
*/
@Column(name = "TIME_STAMP")
private String timeStamp; @Transient
private List<Map> list; /*---------------------以下为变量getset方法区域----------------------------*/
/*
申请内码[YYYYMMDD+12位流水号
]
*/
public void setApplyId(String applyId) {
this.applyId = applyId;
} /*
申请内码[YYYYMMDD+12位流水号
]
*/
public String getApplyId() {
return this.applyId;
} /*
付款批号[预留
]
*/
public void setBatchCode(String batchCode) {
this.batchCode = batchCode;
} /*
付款批号[预留
]
*/
public String getBatchCode() {
return this.batchCode;
} /*
申请编号[]
*/
public void setBznsCode(String bznsCode) {
this.bznsCode = bznsCode;
} /*
申请编号[]
*/
public String getBznsCode() {
return this.bznsCode;
} /*
客户编号[]
*/
public void setCustCode(String custCode) {
this.custCode = custCode;
} /*
客户编号[]
*/
public String getCustCode() {
return this.custCode;
} /*
业务类型[对私批量业务类型
]
*/
public void setBznsType(String bznsType) {
this.bznsType = bznsType;
} /*
业务类型[对私批量业务类型
]
*/
public String getBznsType() {
return this.bznsType;
} /*
申请来源[申请来源:1-Excel导入、2-外部申请
]
*/
public void setAppSource(String appSource) {
this.appSource = appSource;
} /*
申请来源[申请来源:1-Excel导入、2-外部申请
]
*/
public String getAppSource() {
return this.appSource;
} /*
急缓标志[【客户选择,用以匹配发送方式,0-普通;1-加急】
]
*/
public void setFastFlag(String fastFlag) {
this.fastFlag = fastFlag;
} /*
急缓标志[【客户选择,用以匹配发送方式,0-普通;1-加急】
]
*/
public String getFastFlag() {
return this.fastFlag;
} /*
所属机构[目前默认为客户账户的机构
]
*/
public void setOrgId(String orgId) {
this.orgId = orgId;
} /*
所属机构[目前默认为客户账户的机构
]
*/
public String getOrgId() {
return this.orgId;
} /*
客户账户编号[]
*/
public void setCustAccCode(String custAccCode) {
this.custAccCode = custAccCode;
} /*
客户账户编号[]
*/
public String getCustAccCode() {
return this.custAccCode;
} /*
客户账户名称[冗余
]
*/
public void setCustAccName(String custAccName) {
this.custAccName = custAccName;
} /*
客户账户名称[冗余
]
*/
public String getCustAccName() {
return this.custAccName;
} /*
客户银行账号[]
*/
public void setCustBankAcc(String custBankAcc) {
this.custBankAcc = custBankAcc;
} /*
客户银行账号[]
*/
public String getCustBankAcc() {
return this.custBankAcc;
} /*
币种[]
*/
public void setCurcd(String curcd) {
this.curcd = curcd;
} /*
币种[]
*/
public String getCurcd() {
return this.curcd;
} /*
应付金额[]
*/
public void setPayAmt(BigDecimal payAmt) {
this.payAmt = payAmt;
} /*
应付金额[]
*/
public BigDecimal getPayAmt() {
return this.payAmt;
} /*
实付金额[]
*/
public void setPaidAmt(BigDecimal paidAmt) {
this.paidAmt = paidAmt;
} /*
实付金额[]
*/
public BigDecimal getPaidAmt() {
return this.paidAmt;
} /*
汇率[]
*/
public void setExchangeRate(BigDecimal exchangeRate) {
this.exchangeRate = exchangeRate;
} /*
汇率[]
*/
public BigDecimal getExchangeRate() {
return this.exchangeRate;
} /*
总笔数[
]
*/
public void setTotalNum(int totalNum) {
this.totalNum = totalNum;
} /*
总笔数[
]
*/
public int getTotalNum() {
return this.totalNum;
} /*
成功笔数[]
*/
public void setSusNum(int susNum) {
this.susNum = susNum;
} /*
成功笔数[]
*/
public int getSusNum() {
return this.susNum;
} /*
失败笔数[]
*/
public void setFailNum(int failNum) {
this.failNum = failNum;
} /*
失败笔数[]
*/
public int getFailNum() {
return this.failNum;
} /*
付款账户[]
*/
public void setPayAcc(String payAcc) {
this.payAcc = payAcc;
} /*
付款账户[]
*/
public String getPayAcc() {
return this.payAcc;
} /*
收支项目[预留
]
*/
public void setProjectBudget(String projectBudget) {
this.projectBudget = projectBudget;
} /*
收支项目[预留
]
*/
public String getProjectBudget() {
return this.projectBudget;
} /*
资金计划[预留
]
*/
public void setBudgetPlan(String budgetPlan) {
this.budgetPlan = budgetPlan;
} /*
资金计划[预留
]
*/
public String getBudgetPlan() {
return this.budgetPlan;
} /*
用途
用途[]
*/
public void setRemark(String remark) {
this.remark = remark;
} /*
用途
用途[]
*/
public String getRemark() {
return this.remark;
} /*
单据状态["00申请/待提交、01审批中、02审批退回、10受理中、11已受理、12财司退回
20已办结、30已作废"
]
*/
public void setBillStatus(String billStatus) {
this.billStatus = billStatus;
} /*
单据状态["00申请/待提交、01审批中、02审批退回、10受理中、11已受理、12财司退回
20已办结、30已作废"
]
*/
public String getBillStatus() {
return this.billStatus;
} /*
经办人[]
*/
public void setOperator(String operator) {
this.operator = operator;
} /*
经办人[]
*/
public String getOperator() {
return this.operator;
} /*
经办日期[]
*/
public void setOperateDate(String operateDate) {
this.operateDate = operateDate;
} /*
经办日期[]
*/
public String getOperateDate() {
return this.operateDate;
} /*
柜面退回人[]
*/
public void setBacker(String backer) {
this.backer = backer;
} /*
柜面退回人[]
*/
public String getBacker() {
return this.backer;
} /*
柜面退回日期[]
*/
public void setBackDate(String backDate) {
this.backDate = backDate;
} /*
柜面退回日期[]
*/
public String getBackDate() {
return this.backDate;
} /*
柜面退回原因[]
*/
public void setBackReason(String backReason) {
this.backReason = backReason;
} /*
柜面退回原因[]
*/
public String getBackReason() {
return this.backReason;
} /*
对应柜台业务单号[]
*/
public void setCounterBillCode(String counterBillCode) {
this.counterBillCode = counterBillCode;
} /*
对应柜台业务单号[]
*/
public String getCounterBillCode() {
return this.counterBillCode;
} /*
时间戳[]
*/
public void setTimeStamp(String timeStamp) {
this.timeStamp = timeStamp;
} /*
时间戳[]
*/
public String getTimeStamp() {
return this.timeStamp;
} public String getOrgName() {
return orgName;
} public void setOrgName(String orgName) {
this.orgName = orgName;
} public List<Map> getList() {
return list;
} public void setList(List<Map> list) {
this.list = list;
} public String getCustName() {
return custName;
} public void setCustName(String custName) {
this.custName = custName;
} /*---------------------变量getset方法区域-结束----------------------------*/
}
package com.genersoft.enetbank.settlement.payapp.dao;

import com.genersoft.enetbank.bill.recbill.common.BillReceiveComMethod;
import com.genersoft.enetbank.combusi.SettlementConstant;
import com.genersoft.enetbank.combusi.bean.Jssfdjb;
import com.genersoft.enetbank.combusi.commonhelp.dao.CommonHelpDao;
import com.genersoft.enetbank.common.ENBConstants;
import com.genersoft.enetbank.common.UserInfo;
import com.genersoft.enetbank.common.dao.GetSysConf;
import com.genersoft.enetbank.common.dao.TsBaseJdbcDao;
import com.genersoft.enetbank.common.dao.TsDaoFactory;
import com.genersoft.enetbank.common.exception.TsException;
import com.genersoft.enetbank.common.jszhzd.dao.Jszhzd;
import com.genersoft.enetbank.common.utils.TsUtils;
import com.genersoft.enetbank.common.utils.ValidateUtils;
import com.genersoft.enetbank.common.workflow.TsWfUtils;
import com.genersoft.enetbank.settlement.pubbean.BatchPay;
import com.genersoft.enetbank.settlement.querystapp.dao.StSettlementApp;
import com.genersoft.enetbank.settlement.stpublic.PubProduct;
import org.loushang.next.data.*;
import org.loushang.next.web.cmd.CommandContext; import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.math.BigDecimal;
import java.util.*;
import java.util.regex.Pattern; /**
* <p>Description: </p>
* <p>Create Date: 14-2-8</p>
* <p>Copyright : Genersoft Java Group(c)</p>
*
* @version 1.0
*/ /* *************************************************************
* Modifier Date Operate(AMD) Description * ************************************************************/
public class PayappDao { public static void main(String[] args) throws IOException {
BatchPay batchPay=new BatchPay();
FileOutputStream fos=new FileOutputStream("F://MyTest.txt");
ObjectOutputStream objectOutputStream=new ObjectOutputStream(fos);
objectOutputStream.writeObject(batchPay);
objectOutputStream.close();
} }

java对象序列化并存储到文件中的更多相关文章

  1. 关于 Java 对象序列化您不知道的 5 件事

    数年前,当和一个软件团队一起用 Java 语言编写一个应用程序时,我体会到比一般程序员多知道一点关于 Java 对象序列化的知识所带来的好处. 关于本系列 您觉得自己懂 Java 编程?事实上,大多数 ...

  2. 疯狂Java学习笔记(84)----------大约 Java 对象序列化,你不知道 5 事

    几年前,.当一个软件团队一起用 Java 书面申请.我认识比一般程序猿多知道一点关于 Java 对象序列化的知识所带来的优点. 关于本系列 您认为自己懂 Java 编程?其实,大多数程序猿对于 Jav ...

  3. (转)关于 Java 对象序列化您不知道的 5 件事

    关于 Java 对象序列化您不知道的 5 件事 转自:http://developer.51cto.com/art/201506/479979.htm 数年前,当和一个软件团队一起用 Java 语言编 ...

  4. Java对象序列化文件追加对象的问题,以及Java的读取多个对象的问题解决方法。

    这几天做一个小的聊天项目用到对象序列化的知识,发现对象序列化不能像普通文件一样直接追加对象.每次写入对象都会被覆盖.弄了2个多小时终于解决了.Java默认的对象序列化是每次写入对象都会写入一点头ace ...

  5. Java对象序列化剖析

    对象序列化的目的 1)希望将Java对象持久化在文件中 2)将Java对象用于网络传输 实现方式 如果希望一个类的对象可以被序列化/反序列化,那该类必须实现java.io.Serializable接口 ...

  6. 理解Java对象序列化

    http://www.blogjava.net/jiangshachina/archive/2012/02/13/369898.html 1. 什么是Java对象序列化 Java平台允许我们在内存中创 ...

  7. 理解Java对象序列化(二)

    关于Java序列化的文章早已是汗牛充栋了,本文是对我个人过往学习,理解及应用Java序列化的一个总结.此文内容涉及Java序列化的基本原理,以及多种方法对序列化形式进行定制.在撰写本文时,既参考了Th ...

  8. java 对象序列化 RMI

    对于一个存在于Java虚拟机中的对象来说,其内部的状态只保持在内存中.JVM停止之后,这些状态就丢失了.在很多情况下,对象的内部状态是需要被持久化下来的.提到持久化,最直接的做法是保存到文件系统或是数 ...

  9. Java对象序列化入门

      Java对象序列化入门 关于Java序列化的文章早已是汗牛充栋了,本文是对我个人过往学习,理解及应用Java序列化的一个总结.此文内容涉及Java序列化的基本原理,以及多种方法对序列化形式进行定制 ...

随机推荐

  1. iOS-VideoToolbox硬编码H264

    前言 VideoToolBox是iOS8之后,苹果开发的用于硬解码编码H264/H265(iOS11以后支持)的API. 对于H264还不了解的童鞋一定要先看下这边的H264的简介. 编码流程 我们实 ...

  2. kvm安装及简单使用

    1 cat /etc/redhat-release      CentOS release 6.4 (Final)2 egrep ‘vmx|svm’ /proc/cpuinfo3 yum -y ins ...

  3. 解决python 保存json到文件时 中文显示16进制编码的问题

    python 2.7 import codecs import json with codecs.open('Options.json', 'w', encoding='utf-8') as f: j ...

  4. linux中read,write和recv,send的区别

    linux中read,write和recv,send的区别 1.recv和send函数提供了和read和write差不多的功能.但是他们提供了第四个参数来控制读写操作. int recv(int so ...

  5. 005-多线程-锁-JUC锁-LockSupport【使用、Unsafe、对比Object的wait、底层源码】

    一.概述 在Java多线程中,当需要阻塞或者唤醒一个线程时,都会使用LockSupport工具类来完成相应的工作.LockSupport定义了一组公共静态方法,这些方法提供了最基本的线程阻塞和唤醒功能 ...

  6. 免费的HTML5版uploadify

    转http://www.cnblogs.com/lvdabao/p/3452858.html var defaults = { fileTypeExts:'',//允许上传的文件类型,格式'*.jpg ...

  7. Jenkins创建镜像后无法推送到harbor的问题

    https://blog.csdn.net/mydeman/article/details/79042848 1.先切换到root账号,用root登录harbor,就可以push $ sudo pas ...

  8. 容器版Jenkins连接Kubernetes---------非容器版jenkins是无法安装kubenetes插件的,所以无法连接k8s

    容器版Jenkins连接Kubernetes 特别注意:必须用谷歌浏览器,而且非容器版jenkins是无法安装kubernetes插件的,所以无法连接k8s 一.环境说明 OS系统版本:Ubuntu ...

  9. web框架之socket

    概述 套接字最初是为同一主机上的应用程序所创建,使得主机上运行的一个程序(又名一个进程)与另一个运行的程序进行通信.这就是所谓的进程间通信 ( Inter Process Communication, ...

  10. python基础----redis模块

    数据库 关系型数据 例如mysql,有表还有约束条件等 非关系型 k-v形式 memcache 存在内存中 redis 存在内存 mongodb 数据存在磁盘 import redis #string ...