JAVA-5 ObjectInputStream/ObjectOutputStream

其它类:

InputStream/OutputStream:https://blog.csdn.net/sinat_27180253/article/details/82185306

ByteArrayInputStream/ByteArrayOutputStream:https://blog.csdn.net/sinat_27180253/article/details/82185609

BufferedInputStream/BufferedOutputStream:https://blog.csdn.net/sinat_27180253/article/details/82185662

DataInputStream/DataOutputStream:https://blog.csdn.net/sinat_27180253/article/details/82186009

 

ObjectInputStream/ObjectOutputStream是一个装饰流,装饰流不能直接处理数据源,它必须和其他的装饰流或实体流一起使用,用来实现反序列化的。

都是继承OutputStream 和 InputStream

ObjectOutputStream 函数列表 

ObjectOutputStream(OutputStream output)

void close()

void defaultWriteObject()

void flush()

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 com.stydy.stream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

public class ObjectInputStreamx {

     // 文件路径

     public static final String filePath = "D:" + File.separator + "ZZ" + File.separator + "stream.txt";

     public static void main(String[] args) throws Exception {

          //将对象转换为字符流再写入文件中

          ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(filePath, false));

          oos.writeObject(new User("java", 16));

          oos.writeObject(new User("C++", 18));

          oos.writeObject(new User("c语言", 22));

          // 最后添加一个空对象,作为后面读取内容的判断

          oos.writeObject(null);

          oos.flush();

          oos.close();

          

          // 第一次使用ObjectOutputStream往文本写内容时,就会自动在文本内容最后打上结束标示。

          // 当再次使用ObjectOutputStream往里面写入内容时,内容加在上次内容的后面,当使用ObjectInputStream读取内容时,

          // 因为第一次写入内容时,在后面加上了结束标示,将会读取不到第二次写入的内容。

          ObjectInputStream ois = new ObjectInputStream(new FileInputStream(filePath));

          User u;

          while ((u = (User) ois.readObject()) != null) {

              System.out.println(u);

          }

          ois.close();

     }

}

 

package com.stydy.stream;

import java.io.Serializable;

public class User implements Serializable {

     int n = 0;

     private String name;

     private int age;

     User() {

          super();

     }

     User(String name, int age) {

          super();

          n++;

          this.name = name;

          this.age = age;

     }

     

     @Override

    public String toString() {

        n--;

        return "User [name=" + name + ", age=" + age + "]";

    }

     public String getName() {

          return name;

     }

     public void setName(String name) {

          this.name = name;

     }

     public int getAge() {

          return age;

     }

     public void setAge(int age) {

          this.age = age;

     }

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章