zoukankan      html  css  js  c++  java
  • ObjectOutputStream和ObjectInputStream的简单使用

    使用ObjectOutputStream往文本写内容时,首先在文本里面标记开始,然后是内容,最后加上结束标示。如果想再次往文本里面添加内容的话,就要加在开始标示之后和结束标示之前,不然会读取不到写入的内容。

     1 import java.io.FileInputStream;
     2 import java.io.FileOutputStream;
     3 import java.io.ObjectInputStream;
     4 import java.io.ObjectOutputStream;
     5 import java.io.Serializable;
     6 
     7 
     8 public class ObjectBuffer {
     9     public static void main(String[] args) throws Exception {
    10         ObjectOutputStream oos = new ObjectOutputStream(new
    11                 FileOutputStream("src/TXT/Z.txt",false));//工程里面的路径
    12         oos.writeObject(new User("java",16));
    13         oos.writeObject(new User("C++",18));
    14         oos.writeObject(new User("c语言",22));
    15         oos.writeObject(null);   //最后添加一个空对象,作为后面读取内容的判断
    16         oos.flush();
    17         oos.close();
    18         //第一次使用ObjectOutputStream往文本写内容时,就会自动在文本内容最后打上结束标示。
    19         //当再次使用ObjectOutputStream往里面写入内容时,内容加在上次内容的后面,当使用ObjectInputStream读取内容时,
    20         //因为第一次写入内容时,在后面加上了结束标示,将会读取不到第二次写入的内容。
    21 
    22         ObjectInputStream ois = new ObjectInputStream(new FileInputStream("src/TXT/Z.txt"));
    23         User u;
    24         while((u = (User) ois.readObject()) != null){
    25             System.out.println(u);
    26         }
    27         ois.close();
    28     }
    29 }
    30 class User implements Serializable{
    31     static int n = 0;
    32     private String name;
    33     private int age;
    34     public String getName() {
    35         return name;
    36     }
    37     public void setName(String name) {
    38         this.name = name;
    39     }
    40     public int getAge() {
    41         return age;
    42     }
    43     public void setAge(int age) {
    44         this.age = age;
    45     }
    46     public User(String name, int age) {
    47         super();
    48         n++;
    49         this.name = name;
    50         this.age = age;
    51     }
    52     public User() {
    53         super();
    54     }
    55     @Override
    56     public String toString() {
    57         n--;
    58         return "User [name=" + name + ", age=" + age + "]";
    59     }
    60 }

    输出结果: 
    User [name=Java, age=16] 
    User [name=C++, age=18] 
    User [name=C语言, age=22]

  • 相关阅读:
    [转]CROSS APPLY 和outer apply 的区别
    第一次WCF部署成功心得(UP+证书)
    .NET 简单实现广播
    【转】 c#注册全局快捷键
    软件人才成长链
    [转]关于VS2005智能设备中无法找到PInvoke DLL问题
    [转]我倡导无政府主义编程—Fred George访谈录
    运行Windows Mobile程序时报错:无法找到 PInvoke DLL SQLite.Interop.065.DLL
    系统分析师考试说明
    [转]Oracle 字符集的查看和修改
  • 原文地址:https://www.cnblogs.com/benxi/p/7308532.html
Copyright © 2011-2022 走看看