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(); } } }

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

原文地址:https://www.cnblogs.com/danghuijian/p/4400813.html