Java ObjectOutputStream writeFields()方法与示例

ObjectOutputStream类writeFields()方法

  • writeFields()方法在java.io包中可用。

  • writeFields()方法用于将缓冲的字段写入ObjectOutputStream。

  • writeFields()方法是一种非静态方法,只能通过类对象访问,如果尝试使用类名访问该方法,则会收到错误消息。

  • writeFields()方法在写入字段时可能会引发异常。

    • IOException:在写入输出流时遇到任何输入/输出错误时,可能引发此异常。

    • NotActiveException:如果writeObject()未调用以写入类对象的状态,则可能引发此异常。

语法:

    public void writeFields();

参数:

  • 它不接受任何参数。

返回值:

该方法的返回类型为void,不返回任何内容。

示例

//Java程序演示示例 
//writeFields()ObjectOutputStream的void方法的说明

import java.io.*;

public class WriteFieldsOfOOS {
 public static void main(String[] args) throws Exception {
  //实例化ObjectOutputStream,ObjectInputStream- 
  //FileInputStream和FileOutputStream-
  FileOutputStream file_out_stm = new FileOutputStream("D:\\includehelp.txt");
  ObjectOutputStream obj_out_stm = new ObjectOutputStream(file_out_stm);
  FileInputStream file_in_stm = new FileInputStream("D:\\includehelp.txt");

  ObjectInputStream obj_in_stm = new ObjectInputStream(file_in_stm);

  //通过使用writeInt()方法就是写
  //obj_out_stm流的整数
  obj_out_stm.writeObject(new ReadFields());

  obj_out_stm.flush();

  //通过使用readObject()方法是读取
  //  对象和显示字段
  ReadFields rf = (ReadFields) obj_in_stm.readObject();
  System.out.println("obj_in_stm.writeFields(): " + rf.val);
 }

 static public class ReadFields implements Serializable {
  static int val = 12685;

  private static final ObjectStreamField[] serialPersistentFields = {
   new ObjectStreamField("val", Integer.TYPE)
  };

  private void readObject(ObjectInputStream oin)
  throws IOException, ClassNotFoundException {

   //调用readFields()
   ObjectInputStream.GetField fi = oin.readFields();

   //通过使用get()is获得var-
   val = fi.get("val", 0);
  }

  private void writeObject(ObjectOutputStream oos) throws IOException {
   //通过使用putFields()方法是
   //将var写入ObjectStreamField []
   ObjectOutputStream.PutField fi = oos.putFields();
   fi.put("val", val);

   //调用writeFields()
   oos.writeFields();
  }
 }
}

输出结果

obj_in_stm.writeFields(): 12685