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