java对象序列化并存储到文件中

● 如何将一个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();
        }

}