J2ME:rms的对象序列化

本文介绍了一个使用Java实现的对象存储和读取方法。通过将Person对象转换为字节数组进行存储,并从RecordStore中读取数据再转换回Person对象,实现了简单的持久化存储功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;

import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.microedition.rms.RecordStore;
import javax.microedition.rms.RecordStoreException;
import javax.microedition.rms.RecordStoreFullException;
import javax.microedition.rms.RecordStoreNotFoundException;


public class objectrecord extends MIDlet {

 RecordStore rs=null;
 public objectrecord() {
  // TODO Auto-generated constructor stub
 }

 protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
  // TODO Auto-generated method stub

 }

 protected void pauseApp() {
  // TODO Auto-generated method stub

 }

 protected void startApp() throws MIDletStateChangeException {
  // TODO Auto-generated method stub
        try {
   rs=RecordStore.openRecordStore("rs1", true);
   Person p=new Person("成龙","3434545",53),c=new Person();
   rs.addRecord(p.objtob(), 0, p.objtob().length);
   
   c=c.btoobj(rs.getRecord(1));
   System.out.println(c.name+"/t"+c.phones+"/t"+c.age);
  } catch (RecordStoreFullException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (RecordStoreNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (RecordStoreException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
       
 }
 class Person
 {
  Person(){};
  Person(String name,String phone,int age)
  {
   this.name=name;
   this.phones=phone;
   this.age=age;
  }
  public String getName() {
   return name;
  }
  public void setName(String name) {
   this.name = name;
  }
  public String getPhones() {
   return phones;
  }
  public void setPhones(String phones) {
   this.phones = phones;
  }
  public int getAge() {
   return age;
  }
  public void setAge(int age) {
   this.age = age;
  }
  String name;
  String phones;
  int age;
  
  public byte[] objtob() throws IOException         //将对象转换为byte[]
  {
   ByteArrayOutputStream bos=new ByteArrayOutputStream();
   DataOutputStream dos=new DataOutputStream(bos);
   
   dos.writeUTF(name);
   dos.writeUTF(phones);
   dos.writeInt(age);
   bos.close();
   dos.close();
   return bos.toByteArray();
   
  }
  
  public Person btoobj(byte[] b) throws IOException      //将byte[]转换为对象
  {
   ByteArrayInputStream bis=new ByteArrayInputStream(b);
   DataInputStream dis=new DataInputStream(bis);
   Person p=new Person();
   p.setName(dis.readUTF());
   p.setPhones(dis.readUTF());
   p.setAge(dis.readInt());
   return p;
  
   
  }
  
 }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值