private int jiankang=Value.jiankang; //健康
private int jinqian=Value.jinqian; //金钱
private int nengli=Value.nengli; //能力
private int jingyan=Value.jingyan; //经验
private int kuaile=Value.kuaile; //心态
private int daode=Value.daode; //道德
private int jiaoji=Value.jiaoyi; //交际
private int nianling=Value.nianling; //年龄
private int yuefen=Value.yuefen; //剩余月份
private int guoquyuefen=Value.guoquyuefen; //已经过去的月份
private int gongzi=Value.gongzi; //工资
private int shijian=Value.shijian; //空闲时间
private int gongzuo=Value.gongzuo; //根据一个月的工作时间计算所应得到的工资数
private int randomj=Value.randomj; //随机数0为加1为减。
private int random=Value.random; //随机加减股票指数值的存放处
private int yingkui; //盈亏率
private int gupiaozhishu=Value.gupiaozhishu;//股票指数
private int chigushoushu=Value.chigushoushu; //持股手数
private int jiaoyi=Value.jiaoyi; //交易的手数
private int gupiaoshizhi=Value.gupiaoshizhi; //所持股票市值
private boolean boy=Value.boy; //主角为男孩是女,true为男,false为女.
private int Select=Value.Select; //选择播放哪首音乐
private boolean music=Value.music; //片场音乐是否播放
private int fangchanzhishu=Value.fangchanzhishu; //房产指数
private int fangzileibie=Value.fangzileibie; //房子的类别,1——8分别等于上面的房子款式,0为空。
private String zhiwu=Value.zhiwu; //职务
private String banlv=Value.banlv; //伴侣
private String qiche=Value.qiche; //汽车
private String fangzi=Value.fangzi; //房子
private int jinqian=Value.jinqian; //金钱
private int nengli=Value.nengli; //能力
private int jingyan=Value.jingyan; //经验
private int kuaile=Value.kuaile; //心态
private int daode=Value.daode; //道德
private int jiaoji=Value.jiaoyi; //交际
private int nianling=Value.nianling; //年龄
private int yuefen=Value.yuefen; //剩余月份
private int guoquyuefen=Value.guoquyuefen; //已经过去的月份
private int gongzi=Value.gongzi; //工资
private int shijian=Value.shijian; //空闲时间
private int gongzuo=Value.gongzuo; //根据一个月的工作时间计算所应得到的工资数
private int randomj=Value.randomj; //随机数0为加1为减。
private int random=Value.random; //随机加减股票指数值的存放处
private int yingkui; //盈亏率
private int gupiaozhishu=Value.gupiaozhishu;//股票指数
private int chigushoushu=Value.chigushoushu; //持股手数
private int jiaoyi=Value.jiaoyi; //交易的手数
private int gupiaoshizhi=Value.gupiaoshizhi; //所持股票市值
private boolean boy=Value.boy; //主角为男孩是女,true为男,false为女.
private int Select=Value.Select; //选择播放哪首音乐
private boolean music=Value.music; //片场音乐是否播放
private int fangchanzhishu=Value.fangchanzhishu; //房产指数
private int fangzileibie=Value.fangzileibie; //房子的类别,1——8分别等于上面的房子款式,0为空。
private String zhiwu=Value.zhiwu; //职务
private String banlv=Value.banlv; //伴侣
private String qiche=Value.qiche; //汽车
private String fangzi=Value.fangzi; //房子
package mian;import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import java.io.Serializable;public class SaveBean implements Serializable { private static final long serialVersionUID = 151176696117126296L;
public static String path = "d:\\save.dat"; public static void save(Serializable saveData, String path2) throws FileNotFoundException, IOException {
ObjectOutput output = new ObjectOutputStream(new FileOutputStream(path));
output.writeObject(saveData);
output.close();
} @SuppressWarnings("unused")
public static SaveBean load(String path2) throws IOException, ClassNotFoundException {
ObjectInputStream reader = new ObjectInputStream(new FileInputStream(path2));
Object rawData = reader.readObject();
reader.close(); return (SaveBean) rawData;
}
private int jiankang=Value.jiankang; //健康
private int jinqian=Value.jinqian; //金钱
private int nengli=Value.nengli; //能力
private int jingyan=Value.jingyan; //经验
private int kuaile=Value.kuaile; //心态
private int daode=Value.daode; //道德
private int jiaoji=Value.jiaoyi; //交际
private int nianling=Value.nianling; //年龄
private int yuefen=Value.yuefen; //剩余月份
private int guoquyuefen=Value.guoquyuefen; //已经过去的月份
private int gongzi=Value.gongzi; //工资
private int shijian=Value.shijian; //空闲时间
private int gongzuo=Value.gongzuo; //根据一个月的工作时间计算所应得到的工资数
private int randomj=Value.randomj; //随机数0为加1为减。
private int random=Value.random; //随机加减股票指数值的存放处
private int yingkui; //盈亏率
private int gupiaozhishu=Value.gupiaozhishu;//股票指数
private int chigushoushu=Value.chigushoushu; //持股手数
private int jiaoyi=Value.jiaoyi; //交易的手数
private int gupiaoshizhi=Value.gupiaoshizhi; //所持股票市值
private boolean boy=Value.boy; //主角为男孩是女,true为男,false为女.
private int Select=Value.Select; //选择播放哪首音乐
private boolean music=Value.music; //片场音乐是否播放
private int fangchanzhishu=Value.fangchanzhishu; //房产指数
// private int fangjia=80000; //1房1厅,房价基数
// private int fangjia2=100000; //2房1厅,房价基数
// private int fangjia3=200000; //2房2厅,房价基数
// private int fangjia4=240000; //3房1厅,房价基数
// private int fangjia5=300000; //3房2厅,房价基数
// private int fangjia6=360000; //4房2厅,房价基数
// private int fangjia7=1500000; //市郊别墅,房价基数
// private int fangjia8=3000000; //城区别墅,房价基数
private int fangzileibie=Value.fangzileibie; //房子的类别,1——8分别等于上面的房子款式,0为空。
private String zhiwu=Value.zhiwu; //职务
private String banlv=Value.banlv; //伴侣
private String qiche=Value.qiche; //汽车
private String fangzi=Value.fangzi; //房子 public void setRandomj(int randomj) {
this.randomj = randomj;
}
public int getGuoquyuefen() {
return guoquyuefen;
}
public int getGupiaoshizhi() {
return gupiaoshizhi;
}
public int getJinqian() {
return jinqian;
}
public String getBanlv() {
return banlv;
}
public int getChigushoushu() {
return chigushoushu;
}
public int getDaode() {
return daode;
}
public String getFangzi() {
return fangzi;
}
public int getFangzileibie() {
return fangzileibie;
}
public int getFangchanzhishu() {
return fangchanzhishu;
}
public int getGongzi() {
return gongzi;
}
public int getJiaoyi() {
return jiaoyi;
}
public int getGupiaozhishu() {
return gupiaozhishu;
}
public int getJiankang() {
return jiankang;
}
public int getGongzuo() {
return gongzuo;
}
public String getQiche() {
return qiche;
}
// public int getFangjia() {
// return fangjia;
// }
// public int getFangjia2() {
// return fangjia2;
// }
// public int getFangjia3() {
// return fangjia3;
// }
// public int getFangjia4() {
// return fangjia4;
// }
// public int getFangjia5() {
// return fangjia5;
// }
// public int getFangjia6() {
// return fangjia6;
// }
// public int getFangjia7() {
// return fangjia7;
// }
// public int getFangjia8() {
// return fangjia8;
// }
public int getJiaoji() {
return jiaoji;
}
public int getJingyan() {
return jingyan;
}
public int getKuaile() {
return kuaile;
}
public int getNengli() {
return nengli;
}
public int getNianling() {
return nianling;
}
public int getRandom() {
return random;
}
public int getRandomj() {
return randomj;
}
public int getSelect() {
return Select;
}
public int getShijian() {
return shijian;
}
public int getYuefen() {
return yuefen;
}
public int getYingkui() {
return yingkui;
}
public boolean isBoy() {
return boy;
}
public boolean isMusic() {
return music;
}
public String getZhiwu() {
return zhiwu;
}
public void setZhiwu(String zhiwu) {
this.zhiwu = zhiwu;
}
public void setYuefen(int yuefen) {
this.yuefen = yuefen;
}
public void setYingkui(int yingkui) {
this.yingkui = yingkui;
}
public void setShijian(int shijian) {
this.shijian = shijian;
}
public void setSelect(int select) {
this.Select = select;
}
public void setRandom(int random) {
this.random = random;
}
public void setQiche(String qiche) {
this.qiche = qiche;
}
public void setNianling(int nianling) {
this.nianling = nianling;
}
public void setNengli(int nengli) {
this.nengli = nengli;
}
public void setMusic(boolean music) {
this.music = music;
}
public void setKuaile(int kuaile) {
this.kuaile = kuaile;
}
public void setJinqian(int jinqian) {
this.jinqian = jinqian;
}
public void setJingyan(int jingyan) {
this.jingyan = jingyan;
}
public void setJiaoyi(int jiaoyi) {
this.jiaoyi = jiaoyi;
}
public void setJiaoji(int jiaoji) {
this.jiaoji = jiaoji;
}
public void setJiankang(int jiankang) {
this.jiankang = jiankang;
}
public void setGupiaozhishu(int gupiaozhishu) {
this.gupiaozhishu = gupiaozhishu;
}
public void setGupiaoshizhi(int gupiaoshizhi) {
this.gupiaoshizhi = gupiaoshizhi;
}
public void setGuoquyuefen(int guoquyuefen) {
this.guoquyuefen = guoquyuefen;
}
public void setGongzi(int gongzi) {
this.gongzi = gongzi;
}
public void setFangzileibie(int fangzileibie) {
this.fangzileibie = fangzileibie;
}
public void setFangzi(String fangzi) {
this.fangzi = fangzi;
}
public void setGongzuo(int gongzuo) {
this.gongzuo = gongzuo;
}
public void setBanlv(String banlv) {
this.banlv = banlv;
}
public void setBoy(boolean boy) {
this.boy = boy;
}
public void setChigushoushu(int chigushoushu) {
this.chigushoushu = chigushoushu;
}
public void setDaode(int daode) {
this.daode = daode;
}
public void setFangchanzhishu(int fangchanzhishu) {
this.fangchanzhishu = fangchanzhishu;
}
}
新手上路,请不耐心赐教
//序列化
ByteArrayOutputStream buf = new ByteArrayOutputStream();
ObjectOutputStream o = new ObjectOutputStream(buf);
o.writeObject(new SaveBean());
ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(buf.toByteArray()));
//反序列化
SaveBeanser ser = null;
try {
ser = (SaveBean) in.readObject();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
public static void save(Serializable saveData, String path2) throws FileNotFoundException, IOException {
ObjectOutput output = new ObjectOutputStream(new FileOutputStream(path));
output.writeObject(saveData);
output.close();
} @SuppressWarnings("unused")
public static SaveBean load(String path2) throws IOException, ClassNotFoundException {
ObjectInputStream reader = new ObjectInputStream(new FileInputStream(path2));
Object rawData = reader.readObject();
reader.close(); return (SaveBean) rawData;
}
激发事件SaveBean.save(saveBean, SaveBean.path);
D盘也有那个DAT文件,但是读档后发现,没效果,要不把工程发给你看看?
能不能完整修复下我的代码
public class Box implements Serializable
{
private int width;
private int height;
public void setWidth(int width){
this.width = width;
}
public void setHeight(int height){
this.height = height;
}
public static void main(String[] args){
Box myBox = new Box();
myBox.setWidth(50);
myBox.setHeight(30);
try{
FileOutputStream fs = new FileOutputStream("foo.ser");
ObjectOutputStream os = new ObjectOutputStream(fs);
os.writeObject(myBox);
os.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
} //读取的代码类似这样的
FileInputStream istream = new FileInputStream("foo.ser"); // 输入流
ObjectInputStream pr = new ObjectInputStream(istream); // 绑定
Box myBox2 = (Box)pr.readObject(); // 读入序列化的类
istream.close();
相关注意事项
a)序列化时,只对对象的状态进行保存,而不管对象的方法;
b)当一个父类实现序列化,子类自动实现序列化,不需要显式实现Serializable接口;
c)当一个对象的实例变量引用其他对象,序列化该对象时也把引用对象进行序列化;
d)并非所有的对象都可以序列化,,至于为什么不可以,有很多原因了,比如:
1.安全方面的原因,比如一个对象拥有private,public等field,对于一个要传输的对象,比如写到文件,或者进行rmi传输 等等,在序列化进行传输的过程中,这个对象的private等域是不受保护的。
2. 资源分配方面的原因,比如socket,thread类,如果可以序列化,进行传输或者保存,也无法对他们进行重新的资源分 配,而且,也是没有必要这样实现。
就是说静态的Value.jinqian能存到非静态的jinqian吗?
读档是Value.jinqian=jinqian就不行了
package mian;import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;public class SaveBean implements Serializable { private static final long serialVersionUID = 151176696117126296L; public static void save(Serializable saveData) throws FileNotFoundException, IOException { FileOutputStream fs = new FileOutputStream("foo.ser");
ObjectOutputStream output = new ObjectOutputStream(fs);
output.writeObject(saveData);
output.close();
} @SuppressWarnings("unused")
public static SaveBean load() throws IOException, ClassNotFoundException { FileInputStream istream = new FileInputStream("foo.ser"); // 输入流
ObjectInputStream pr = new ObjectInputStream(istream); // 绑定
SaveBean reader = (SaveBean)pr.readObject(); // 读入序列化的类
istream.close(); Value.jiankang=reader.jiankang; //健康
Value.jinqian=reader.jinqian; //金钱
Value.nengli=reader.nengli; //能力
Value.jingyan=reader.jingyan; //经验
Value.kuaile=reader.kuaile; //心态
Value.daode=reader.daode; //道德
Value.jiaoyi=reader.jiaoji; //交际
Value.nianling=reader.nianling; //年龄
Value.yuefen=reader.yuefen; //剩余月份
Value.guoquyuefen=reader.guoquyuefen; //已经过去的月份
Value.gongzi=reader.gongzi; //工资
Value.shijian=reader.shijian; //空闲时间
Value.gongzuo=reader.gongzuo; //根据一个月的工作时间计算所应得到的工资数
Value.randomj=reader.randomj; //随机数0为加1为减。
Value.random=reader.random; //随机加减股票指数值的存放处
Value.gupiaozhishu=reader.gupiaozhishu;//股票指数
Value.chigushoushu=reader.chigushoushu; //持股手数
Value.jiaoyi=reader.jiaoyi; //交易的手数
Value.gupiaoshizhi=reader.chigushoushu; //所持股票市值
Value.boy=reader.boy; //主角为男孩是女,true为男,false为女.
Value.Select=reader.Select; //选择播放哪首音乐
Value.music=reader.music; //片场音乐是否播放
Value.fangchanzhishu=reader.fangchanzhishu; //房产指数
Value.fangzileibie=reader.fangzileibie; //房子的类别,1——8分别等于上面的房子款式,0为空。
Value.zhiwu=reader.zhiwu; //职务
Value.banlv=reader.banlv; //伴侣
Value.qiche=reader.qiche; //汽车
Value.fangzi=reader.fangzi; //房子
return (SaveBean) reader; } public int jiankang=Value.jiankang; //健康
public int jinqian=Value.jinqian; //金钱
public int nengli=Value.nengli; //能力
public int jingyan=Value.jingyan; //经验
public int kuaile=Value.kuaile; //心态
public int daode=Value.daode; //道德
public int jiaoji=Value.jiaoyi; //交际
public int nianling=Value.nianling; //年龄
public int yuefen=Value.yuefen; //剩余月份
public int guoquyuefen=Value.guoquyuefen; //已经过去的月份
public int gongzi=Value.gongzi; //工资
public int shijian=Value.shijian; //空闲时间
public int gongzuo=Value.gongzuo; //根据一个月的工作时间计算所应得到的工资数
public int randomj=Value.randomj; //随机数0为加1为减。
public int random=Value.random; //随机加减股票指数值的存放处
public int gupiaozhishu=Value.gupiaozhishu;//股票指数
public int chigushoushu=Value.chigushoushu; //持股手数
public int jiaoyi=Value.jiaoyi; //交易的手数
public int gupiaoshizhi=Value.gupiaoshizhi; //所持股票市值
public boolean boy=Value.boy; //主角为男孩是女,true为男,false为女.
public int Select=Value.Select; //选择播放哪首音乐
public boolean music=Value.music; //片场音乐是否播放
public int fangchanzhishu=Value.fangchanzhishu; //房产指数
public int fangzileibie=Value.fangzileibie; //房子的类别,1——8分别等于上面的房子款式,0为空。
public String zhiwu=Value.zhiwu; //职务
public String banlv=Value.banlv; //伴侣
public String qiche=Value.qiche; //汽车
public String fangzi=Value.fangzi; //房子 public int getJinqian() {
return jinqian;
}
public int getGuoquyuefen() {
return guoquyuefen;
}
public int getGupiaoshizhi() {
return gupiaoshizhi;
}
public String getBanlv() {
return banlv;
}
public int getChigushoushu() {
return chigushoushu;
}
public int getDaode() {
return daode;
}
public String getFangzi() {
return fangzi;
}
public int getFangzileibie() {
return fangzileibie;
}
public int getFangchanzhishu() {
return fangchanzhishu;
}
public int getGongzi() {
return gongzi;
}
public int getJiaoyi() {
return jiaoyi;
}
public int getGupiaozhishu() {
return gupiaozhishu;
}
public int getJiankang() {
return jiankang;
}
public int getGongzuo() {
return gongzuo;
}
public String getQiche() {
return qiche;
}
public int getJiaoji() {
return jiaoji;
}
public int getJingyan() {
return jingyan;
}
public int getKuaile() {
return kuaile;
}
public int getNengli() {
return nengli;
}
public int getNianling() {
return nianling;
}
public int getRandom() {
return random;
}
public int getRandomj() {
return randomj;
}
public int getSelect() {
return Select;
}
public int getShijian() {
return shijian;
}
public int getYuefen() {
return yuefen;
} public boolean isBoy() {
return boy;
}
public boolean isMusic() {
return music;
}
public String getZhiwu() {
return zhiwu;
}
public void setRandomj(int randomj) {
this.randomj = randomj;
}
public void setZhiwu(String zhiwu) {
this.zhiwu = zhiwu;
}
public void setYuefen(int yuefen) {
this.yuefen = yuefen;
}
public void setShijian(int shijian) {
this.shijian = shijian;
}
public void setSelect(int select) {
this.Select = select;
}
public void setRandom(int random) {
this.random = random;
}
public void setQiche(String qiche) {
this.qiche = qiche;
}
public void setNianling(int nianling) {
this.nianling = nianling;
}
public void setNengli(int nengli) {
this.nengli = nengli;
}
public void setMusic(boolean music) {
this.music = music;
}
public void setKuaile(int kuaile) {
this.kuaile = kuaile;
}
public void setJinqian(int jinqian) {
this.jinqian = jinqian;
}
public void setJingyan(int jingyan) {
this.jingyan = jingyan;
}
public void setJiaoyi(int jiaoyi) {
this.jiaoyi = jiaoyi;
}
public void setJiankang(int jiankang) {
this.jiankang = jiankang;
}
public void setGupiaozhishu(int gupiaozhishu) {
this.gupiaozhishu = gupiaozhishu;
}
public void setGupiaoshizhi(int gupiaoshizhi) {
this.gupiaoshizhi = gupiaoshizhi;
}
public void setGuoquyuefen(int guoquyuefen) {
this.guoquyuefen = guoquyuefen;
}
public void setGongzi(int gongzi) {
this.gongzi = gongzi;
}
public void setFangzileibie(int fangzileibie) {
this.fangzileibie = fangzileibie;
}
public void setFangzi(String fangzi) {
this.fangzi = fangzi;
}
public void setGongzuo(int gongzuo) {
this.gongzuo = gongzuo;
}
public void setBanlv(String banlv) {
this.banlv = banlv;
}
public void setBoy(boolean boy) {
this.boy = boy;
}
public void setChigushoushu(int chigushoushu) {
this.chigushoushu = chigushoushu;
}
public void setDaode(int daode) {
this.daode = daode;
}
public void setFangchanzhishu(int fangchanzhishu) {
this.fangchanzhishu = fangchanzhishu;
}}触发存储的事件
private JMenuItem getSavaMenuItem() {
if (savaMenuItem == null) {
savaMenuItem = new JMenuItem();
savaMenuItem.setText("存储游戏");
savaMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
SaveBean s=new SaveBean();
try {
SaveBean .save(s);
System.out.println(""+s.jinqian+Value.jinqian);
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} });
}
return savaMenuItem;
}触发读取的事件
private JMenuItem getLoadMenuItem() {
if (loadMenuItem == null) {
loadMenuItem = new JMenuItem();
loadMenuItem.setText("读取游戏");
loadMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
SaveBean l=new SaveBean();
System.out.println("load: " + l.jinqian);
try {
SaveBean.load();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
}
return loadMenuItem;
}