zoukankan      html  css  js  c++  java
  • Java对象的序列化与反序列化

    学习了一下Java对象的序列化与反序列化,下面的代码是一个简单的例子。

    Java代码 复制代码
    1. import java.io.File;  
    2. import java.io.FileInputStream;  
    3. import java.io.FileNotFoundException;  
    4. import java.io.FileOutputStream;  
    5. import java.io.IOException;  
    6. import java.io.ObjectInputStream;  
    7. import java.io.ObjectOutputStream;  
    8. import java.util.Date;  
    9.   
    10.   
    11. public class sirializableTest implements Serializable  
    12. {  
    13.     private String username;  
    14.     private transient String password;   //不会参与序列化与反序列化的过程  
    15.       
    16.     public sirializableTest(String username, String password)  
    17.      {  
    18.         this.username = username;  
    19.         this.password = password;  
    20.      }  
    21.       
    22.     public String toString()  
    23.      {  
    24.         return "username: " + username + ", password: " + password;  
    25.      }  
    26.       
    27.     public static void main(String[] args)  
    28.      {         
    29.         try   
    30.          {  
    31.              File f = new File("C:\\a.obj");  
    32.             if(!f.exists())  
    33.                  f.createNewFile();  
    34.               
    35.             //序列化对象  
    36.              ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(f));  
    37.              out.writeObject("Happy New Year !");  
    38.              out.writeObject(new Date());  
    39.              sirializableTest test = new sirializableTest("yoyo", "20090105");  
    40.              out.writeObject(test);  
    41.              out.close();  
    42.               
    43.             //反序列化对象  
    44.              ObjectInputStream in = new ObjectInputStream(new FileInputStream(f));  
    45.              System.out.println(in.readObject());  //输出:Happy New Year !  
    46.              System.out.println(in.readObject());  //输出:Mon Jan 05 17:18:39 CST 2009  
    47.              System.out.println(in.readObject());  //输出:username: yoyo, password: null  
    48.               
    49.          } catch (FileNotFoundException e) {  
    50.              e.printStackTrace();  
    51.          } catch (IOException e) {  
    52.              e.printStackTrace();  
    53.          } catch(ClassNotFoundException e) {  
    54.              e.printStackTrace();  
    55.          }  
    56.      }  
    57. }  
    import java.io.File; 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.util.Date; public class sirializableTest implements Serializable { private String username; private transient String password; //不会参与序列化与反序列化的过程 public sirializableTest(String username, String password) { this.username = username; this.password = password; } public String toString() { return "username: " + username + ", password: " + password; } public static void main(String[] args) { try { File f = new File("C:\\a.obj"); if(!f.exists()) f.createNewFile(); //序列化对象 ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(f)); out.writeObject("Happy New Year !"); out.writeObject(new Date()); sirializableTest test = new sirializableTest("yoyo", "20090105"); out.writeObject(test); out.close(); //反序列化对象 ObjectInputStream in = new ObjectInputStream(new FileInputStream(f)); System.out.println(in.readObject()); //输出:Happy New Year ! System.out.println(in.readObject()); //输出:Mon Jan 05 17:18:39 CST 2009 System.out.println(in.readObject()); //输出:username: yoyo, password: null } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch(ClassNotFoundException e) { e.printStackTrace(); } } }

           当然,保存的文件也可以是其他格式。如果用记事本打开,会看到一堆乱码。

  • 相关阅读:
    crystal report 用存储过程的问题。
    新的开始—2014
    C#基础(二)——C#中的构造函数
    C#基础(一)——C#中反斜杠/n与/r的区别
    Html基础(一)
    yield关键字, default关键字, 别名关键字
    让 wpf tabcontrol 延缓初始化每个tab item content
    MVC,MVP,MVVM(补充)
    Focus scope in WPF
    Wpf ItemsControl 开启UI Virtualization 的条件
  • 原文地址:https://www.cnblogs.com/danghuijian/p/4400813.html
Copyright © 2011-2022 走看看