什么是序列化和如何实现序列化上说的清楚,希望下面代码对你有帮助...- public class ObjectOutptuStreamTest {
- /**
- * @param args
- * 将对象存入到流中
- * @throws IOException
- * @throws FileNotFoundException
- */
- public static void m1()throws IOException{
- ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream("c:\\1.text"));
- os.writeObject(new Personnn("zhangsasn",20));
- os.close();
- // 运行以上程序会出现java.io.NotSerializableException:某些序列话的对象不能实现
- //所以Personnn要实现Serializable接口
- }
- //读出来
- public static void m2()throws IOException, ClassNotFoundException{
- ObjectInputStream ois = new ObjectInputStream(new FileInputStream("c:\\1.text"));
- //返回的是object类型的
- Personnn p = (Personnn)ois.readObject();
- System.out.print(p);
- }
- //public static void main(String[] args) throws IOException, ClassNotFoundException
- //可以直接写成public static void main(String[] args) throws Exception
- public static void main(String[] args) throws IOException, ClassNotFoundException {
- // TODO Auto-generated method stub
- m2();
- }
- }
- class Personnn implements Serializable{
- /**
- * serialVersionUID = 1L;通常是给编译器用的,因为一个类产生对象以后,固定存在以后,类可以改变
- * 在重新编译的时候会产生一个新的序列号,根据ID好来判断这个对象和这个类他两个是不是用同一个序列号产生的
- * ID就是给类固定一个标志。新的类还可以去操作曾经被序列化的对象
- *
- */
- private static final long serialVersionUID = 1L;
- String name;
-
- int age;
- //对非晶态的成员不像序列话可以写成
- //transient int age;
- Personnn(String name, int age){
- this.name = name;
- this.age = age;
- }
- public String toString(){
- return name+"..."+age;
- }
- }
复制代码 |