JavaIO4--ObjectInputStream和ObjectOutputStream
生活随笔
收集整理的這篇文章主要介紹了
JavaIO4--ObjectInputStream和ObjectOutputStream
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
ObjectInputStream 和 ObjectOutputStream 介紹
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)
演示程序
package org.credo.jdk.io.ObjectStreamTest;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.io.Serializable; import java.util.HashMap; import java.util.Iterator; import java.util.Map;import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; import org.apache.commons.lang.builder.ToStringBuilder;public class ObjectStreamTest {public static void main(String[] args){try{testWrite();testRead();} catch (IOException | ClassNotFoundException e){e.printStackTrace();}}private static final String TMP_FILE = "computer.tmp";public static void testWrite() throws FileNotFoundException, IOException{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<String,String> map = new HashMap<>(); map.put("one", "red"); map.put("two", "green"); map.put("three", "blue"); out.writeObject(map); // 寫入自定義的Computer對象,Computer實現了Serializable接口 Computer computer=new Computer(1, 5666.66, "Y480");out.writeObject(computer);out.close();}@SuppressWarnings("rawtypes")public static void testRead() throws FileNotFoundException, IOException, ClassNotFoundException{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 iterator=map.entrySet().iterator();while (iterator.hasNext()){Map.Entry mapEntry = (Map.Entry) iterator.next();System.out.printf("%-6s -- %s\n" , mapEntry.getKey(), mapEntry.getValue());}//讀取ComputerComputer computer=(Computer)in.readObject();System.out.println("computer: " + computer);in.close();}}class Computer implements Serializable {private static final long serialVersionUID = -6347513352513264586L;private int id;private double price;private String name;public Computer(int id,double price,String name) {this.id=id;this.price=price;this.name=name;}public int getId(){return id;}public void setId(int id){this.id = id;}public double getPrice(){return price;}public void setPrice(double price){this.price = price;}public String getName(){return name;}public void setName(String name){this.name = name;}@Overridepublic int hashCode(){return HashCodeBuilder.reflectionHashCode(this);}@Overridepublic boolean equals(Object obj){return EqualsBuilder.reflectionEquals(this, obj);}@Overridepublic String toString(){return ToStringBuilder.reflectionToString(this);}}
輸出
boolean:true byte:65 char:a int:20131015 float:3.140000 double:1.414000 three -- blue two -- green one -- red computer: org.credo.jdk.io.ObjectStreamTest.Computer@4935b92e[id=1,price=5666.66,name=Y480]
轉載于:https://my.oschina.net/zhaoqian/blog/343448
總結
以上是生活随笔為你收集整理的JavaIO4--ObjectInputStream和ObjectOutputStream的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sas中的sql(2) 行选择 、限制重
- 下一篇: iphone——日期处理