● 如何将一个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. QtCreator集成的MSVC套件有问题

    MSVC编译出来的内部签名算法的程序,相同的代码,验签结果和MINGW编译出来的不一样.MINGW编译出来的结果是正确的 怀疑是因为QtCreator集成的msvc有问题,可能是编码问题,可能是其他问 ...

  2. Flutter移动电商实战 --(18)首页_火爆专区商品接口制作

    1.获取接口的方法 在service/service_method.dart里制作方法.我们先不接收参数,先把接口调通. Future getHomePageBeloConten() async{ t ...

  3. LC 987. Vertical Order Traversal of a Binary Tree

    Given a binary tree, return the vertical order traversal of its nodes values. For each node at posit ...

  4. Connection

    作用: * 获取执行sql语句对象 ** createStatement(): 获取Statement对象 ** prepareStatement(String sql): 获取预处理对象 ** pr ...

  5. ubuntu18 faster-rcnn

    luo@luo-All-Series:~/MyFile$ luo@luo-All-Series:~/MyFile$ luo@luo-All-Series:~/MyFile$ git clone htt ...

  6. Qt编写自定义控件35-GIF录屏控件

    一.前言 在平时的写作过程中,经常需要将一些操作动作和效果图截图成gif格式,使得涵盖的信息更全面更生动,有时候可以将整个操作过程和运行效果录制成MP4,但是文件体积比较大,而且很多网站不便于上传,基 ...

  7. Qt编写安防视频监控系统9-自动隐藏光标

    一.前言 这个效果的灵感来自于大屏电子看板系统,在很多系统中尤其是上了大屏的时候,其实在用户不在操作的时候,是很不希望看到那个鼠标箭头指针的,只有当用户操作的时候才显示出来,这个就需要开个定时器定时计 ...

  8. 阿里云轻量应用服务器 配置mysql详解(转载)

    1.服务器规格 1.地域选择 考虑个人地址因素因此选择了华南. 2.选择应用镜像/系统镜像 这个应该看个人需求,因为我只是想用来放数据库的,所以就随便选了个WordPress. 选好之后购买就完事了, ...

  9. 使用apache commons csv解析del(类似csv)格式文件

    del格式类似csv,我这里的测试文件test.del是从DB2数据库中导出来的一组数据. apache commons csv的maven坐标为: <!-- https://mvnreposi ...

  10. unity 读取灰度图生成按高程分层设色地形模型

    准备灰度图 1.高程按比例对应hue色相(hsv)生成mesh效果 o.color = float4(hsv2rgb(float3(v.vertex.y/100.0, 0.5, 0.75)), 1.0 ...