当前位置:编程学习 > JAVA >>

一个关于从文件中读取对象的问题

假如有一个实现了序列化的类a,a中有3个属性b,c,d,同时b,c,d也都是对象,现在我把a存入文件,请问我想只读出d,可以做到吗? --------------------编程问答--------------------
引用 楼主 limingyu220104 的回复:
假如有一个实现了序列化的类a,a中有3个属性b,c,d,同时b,c,d也都是对象,现在我把a存入文件,请问我想只读出d,可以做到吗?

请问,你把a存入文件,是以什么方式或者说以什么样的数据格式保存对象a的信息到文件? --------------------编程问答--------------------
引用 1 楼 ljl434841 的回复:
Quote: 引用 楼主 limingyu220104 的回复:

假如有一个实现了序列化的类a,a中有3个属性b,c,d,同时b,c,d也都是对象,现在我把a存入文件,请问我想只读出d,可以做到吗?

请问,你把a存入文件,是以什么方式或者说以什么样的数据格式保存对象a的信息到文件?

不好意思我没太懂,就是用java.io里面的ObjectOutputStream的writeObject方法 --------------------编程问答-------------------- 显示声明序列号

只保留一个属性d可以不 没有试过这个!!! --------------------编程问答-------------------- 使用transient关键字


public class a implements Serializable {
        private static final long serialVersionUID = -7490654452791933426L;
        private transient ObjectB b;
        private transient ObjectC c;
        private ObjectD d;
}
--------------------编程问答-------------------- 自己分析文件,然后找出b的文件偏移,读出反序列化即可 --------------------编程问答-------------------- 纠结什么 其他的不要 你不要读就好了啊  或者其他的不要你就干脆不要写入文件不就好了 --------------------编程问答-------------------- 不想被实例化的属性前面加transient关键字 --------------------编程问答--------------------
引用 4 楼 shnulaa 的回复:
使用transient关键字


public class a implements Serializable {
        private static final long serialVersionUID = -7490654452791933426L;
        private transient ObjectB b;
        private transient ObjectC c;
        private ObjectD d;
}


引用 5 楼 ldq67123 的回复:
自己分析文件,然后找出b的文件偏移,读出反序列化即可


没有那么麻烦,4楼的方法就可以了。如果楼主连a都不想要,只需要执行2次ObjectInputStream的readObject方法就行了,第一次读的是a,第二次读的是d。 --------------------编程问答-------------------- 先弄懂什么是“序列化”
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,