亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ObjectInputStream 和 ObjectOutputStream 介紹_動力節點Java學院整理

發布時間:2020-09-15 23:40:32 來源:腳本之家 閱讀:124 作者:mrr 欄目:編程語言

ObjectInputStream 和 ObjectOutputStream 的作用是,對基本數據和對象進行序列化操作支持。

創建“文件輸出流”對應的ObjectOutputStream對象,該ObjectOutputStream對象能提供對“基本數據或對象”的持久存儲;當我們需要讀取這些存儲的“基本數據或對象”時,可以創建“文件輸入流”對應的ObjectInputStream,進而讀取出這些“基本數據或對象”。

注意: 只有支持 java.io.Serializable 或 java.io.Externalizable 接口的對象才能被ObjectInputStream/ObjectOutputStream所操作!

ObjectOutputStream 函數列表 

// 構造函數
ObjectOutputStream(OutputStream output)
// public函數
void   close()
void   defaultWriteObject()
void   flush()
ObjectOutputStream.PutField   putFields()
void   reset()
void   useProtocolVersion(int version)
void   write(int value)
void   write(byte[] buffer, int offset, int length)
void   writeBoolean(boolean value)
void   writeByte(int value)
void   writeBytes(String value)
void   writeChar(int value)
void   writeChars(String value)
void   writeDouble(double value)
void   writeFields()
void   writeFloat(float value)
void   writeInt(int value)
void   writeLong(long value)
final void   writeObject(Object object)
void   writeShort(int value)
void   writeUTF(String value)
void   writeUnshared(Object object)
ObjectInputStream 函數列表
// 構造函數
ObjectInputStream(InputStream input)
int   available()
void   close()
void   defaultReadObject()
int   read(byte[] buffer, int offset, int length)
int   read()
boolean   readBoolean()
byte   readByte()
char   readChar()
double   readDouble()
ObjectInputStream.GetField   readFields()
float   readFloat()
void   readFully(byte[] dst)
void   readFully(byte[] dst, int offset, int byteCount)
int   readInt()
String   readLine()
long   readLong()
final Object   readObject()
short   readShort()
String   readUTF()
Object   readUnshared()
int   readUnsignedByte()
int   readUnsignedShort()
synchronized void   registerValidation(ObjectInputValidation object, int priority)
int   skipBytes(int length)

演示程序

源碼如下(ObjectStreamTest.java):

/**
 * ObjectInputStream 和 ObjectOutputStream 測試程序
 *
 * 注意:通過ObjectInputStream, ObjectOutputStream操作的對象,必須是實現了Serializable或Externalizable序列化接口的類的實例。
 *
 * 
 */
import java.io.FileInputStream;  
import java.io.FileOutputStream;  
import java.io.ObjectInputStream;  
import java.io.ObjectOutputStream;  
import java.io.Serializable;  
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
public class ObjectStreamTest { 
  private static final String TMP_FILE = "box.tmp";
  public static void main(String[] args) {  
    testWrite();
    testRead();
  }
  /**
   * ObjectOutputStream 測試函數
   */
  private static void testWrite() {  
    try {
      ObjectOutputStream out = new ObjectOutputStream(
          new FileOutputStream(TMP_FILE));
      out.writeBoolean(true);
      out.writeByte((byte)65);
      out.writeChar('a');
      out.writeInt(20131015);
      out.writeFloat(3.14F);
      out.writeDouble(1.414D);
      // 寫入HashMap對象
      HashMap map = new HashMap();
      map.put("one", "red");
      map.put("two", "green");
      map.put("three", "blue");
      out.writeObject(map);
      // 寫入自定義的Box對象,Box實現了Serializable接口
      Box box = new Box("desk", 80, 48);
      out.writeObject(box);
      out.close();
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }
  /**
   * ObjectInputStream 測試函數
   */
  private static void testRead() {
    try {
      ObjectInputStream in = new ObjectInputStream(
          new FileInputStream(TMP_FILE));
      System.out.printf("boolean:%b\n" , in.readBoolean());
      System.out.printf("byte:%d\n" , (in.readByte()&0xff));
      System.out.printf("char:%c\n" , in.readChar());
      System.out.printf("int:%d\n" , in.readInt());
      System.out.printf("float:%f\n" , in.readFloat());
      System.out.printf("double:%f\n" , in.readDouble());
      // 讀取HashMap對象
      HashMap map = (HashMap) in.readObject();
      Iterator iter = map.entrySet().iterator();
      while (iter.hasNext()) {
        Map.Entry entry = (Map.Entry)iter.next();
        System.out.printf("%-6s -- %s\n" , entry.getKey(), entry.getValue());
      }
      // 讀取Box對象,Box實現了Serializable接口
      Box box = (Box) in.readObject();
      System.out.println("box: " + box);
      in.close();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}
class Box implements Serializable {
  private int width;  
  private int height; 
  private String name;  
  public Box(String name, int width, int height) {
    this.name = name;
    this.width = width;
    this.height = height;
  }
  @Override
  public String toString() {
    return "["+name+": ("+width+", "+height+") ]";
  }
}

運行結果:

boolean:true
byte:65
char:a
int:20131015
float:3.140000
double:1.414000
two  -- green
one  -- red
three -- blue
box: [desk: (80, 48) ]

以上所述是小編給大家介紹的ObjectInputStream 和 ObjectOutputStream 的相關知識,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阜宁县| 玉环县| 许昌市| 普格县| 洪洞县| 五家渠市| 新竹县| 武安市| 黄山市| 虹口区| 二手房| 景宁| 昌乐县| 岐山县| 新营市| 淮安市| 宣城市| 泽普县| 太白县| 板桥市| 大同县| 麦盖提县| 德阳市| 龙川县| 保康县| 兴城市| 乌拉特后旗| 洱源县| 定远县| 德钦县| 邯郸县| 建始县| 益阳市| 昂仁县| 体育| 新绛县| 奉化市| 江源县| 池州市| 赤城县| 南部县|