● 如何将一个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. 异步机制 - BindIoCompletionCallback

    直接上代码 VOID CALLBACK test_io_completion_routine( DWORD dwErrorCode, DWORD dwNumberOfBytesTransfered, ...

  2. APP界面架构设计

    作为PM,信息架构和页面流的设计想必烂熟于心,当确定好产品战略层和范围层即为何种目标用户提供何种服务后,就要着手搭建功能架构,将目标功能通过良好的用户体验传递给用户,目的是高效解决用户痛点,从而实现价 ...

  3. 转贴:PLSQL中 commit 和 rollback 的区别

    PLSQL中 commit 和 rollback 的区别 原文链接:https://blog.csdn.net/jerrytomcat/article/details/82250915 一. comm ...

  4. 图像质量评价-NQM和WPSNR

    王保全. 基于混合专家模型的快速图像超分辨率方法研究与实现[D]. 2015. PSNR 和SSIM 在有时候并不能很确切的表示图像质量 标准,该论文中根据一定量的人为的感知评分作为参考,用斯皮尔曼等 ...

  5. vue 自定义 提示框(Toast)组件

    1.自定义 提示框 组件 src / components / Toast / index.js /** * 自定义 提示框( Toast )组件 */ var Toast = {}; var sho ...

  6. kotlin 泛型函数

    fun<T> singletonList(item:T):List<T>{ ..... } fun<T>T.basicToString():String{ .... ...

  7. [C++]数据结构:线性表之顺序表

    1 顺序表 ADT + Status InitList(SeqList &L) 初始化顺序表 + void printList(SeqList L) 遍历顺序表 + int ListLengt ...

  8. DataFrame执行groupby聚合操作后,如何继续保持DataFrame对象而不变成Series对象

    刚接触pandas不久,在处理特征时,碰到一个恶心的问题:用groupby聚合后,之前的dataframe对象变成了series对象,聚合的字段变成了索引index,导致获取这些字段时很麻烦,后面发现 ...

  9. bash小结

    context:CentOS 什么是shell? shell就是与计算机交互的接口. linux支持的shell [root@node1 ~]# cat /etc/shells /bin/sh #被 ...

  10. Java工程师学习指南第6部分:深入理解JVM虚拟机

    本文整理了微信公众号[Java技术江湖]发表和转载过的JVM虚拟机相关优质文章,想看到更多Java技术文章,就赶紧关注本公众号吧吧. JVM原理分析,看了都说好 JVM 深入学习:Java 解析 Cl ...