使用Java序列化把对象存储到文件中,再从文件中读出来

使用Java序列化把对象存储到文件中去,再从文件中读取出来;

此时,我们使用ObjectOutputStream和ObjectInputStream来进行对象的读取;

使用ObjectOutputStream对象的writeObject()方法来进行对象的写入;

使用ObjectInputStream对象的readObject()方法来读取对象。

[java]  view plain copy
  1. import java.io.FileInputStream;  
  2. import java.io.FileNotFoundException;  
  3. import java.io.FileOutputStream;  
  4. import java.io.IOException;  
  5. import java.io.ObjectInputStream;  
  6. import java.io.ObjectOutputStream;  
  7. import java.io.Serializable;  
  8. import java.util.ArrayList;  
  9. import java.util.Iterator;  
  10. import java.util.List;  
  11. import junit.framework.TestCase;  
  12. /** 
  13.  * 使用Java序列化把对象存储到文件中,再从文件中读出来 注意读取的时候,读取数据的顺序一定要和存放数据的顺序保持一致 
  14.  *  
  15.  * @author Champion Wong 
  16.  *  
  17.  */  
  18. public class Test08 extends TestCase {  
  19.     public void test() {  
  20.         // 创建一个User对象  
  21.         User user = new User();  
  22.         user.setId(1);  
  23.         user.setName("Mr XP.Wang");  
  24.         // 创建一个List对象  
  25.         List<String> list = new ArrayList<String>();  
  26.         list.add("My name");  
  27.         list.add(" is");  
  28.         list.add(" Mr XP.Wang");  
  29.         try {  
  30.             ObjectOutputStream os = new ObjectOutputStream(  
  31.                     new FileOutputStream("C:/wxp.txt"));  
  32.             os.writeObject(user);// 将User对象写进文件  
  33.             os.writeObject(list);// 将List列表写进文件  
  34.             os.close();  
  35.         } catch (FileNotFoundException e) {  
  36.             e.printStackTrace();  
  37.         } catch (IOException e) {  
  38.             e.printStackTrace();  
  39.         }  
  40.         try {  
  41.             ObjectInputStream is = new ObjectInputStream(new FileInputStream(  
  42.                     "C:/wxp.txt"));  
  43.             User temp = (User) is.readObject();// 从流中读取User的数据  
  44.             System.out.println(temp.getId());  
  45.             System.out.println(temp.getName());  
  46.             List tempList = (List) is.readObject();// 从流中读取List的数据  
  47.             for (Iterator iterator = tempList.iterator(); iterator.hasNext();) {  
  48.                 System.out.print(iterator.next());  
  49.             }  
  50.             is.close();  
  51.         } catch (FileNotFoundException e) {  
  52.             e.printStackTrace();  
  53.         } catch (IOException e) {  
  54.             e.printStackTrace();  
  55.         } catch (ClassNotFoundException e) {  
  56.             e.printStackTrace();  
  57.         }  
  58.     }  
  59. }  
  60. class User implements Serializable {  
  61.     private int id;  
  62.     private String name;  
  63.     public int getId() {  
  64.         return id;  
  65.     }  
  66.     public void setId(int id) {  
  67.         this.id = id;  
  68.     }  
  69.     public String getName() {  
  70.         return name;  
  71.     }  
  72.     public void setName(String name) {  
  73.         this.name = name;  
  74.     }  
  75. }  
  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值