java中对象输入流和输出流

时间:2022-07-12

对象输出流和对象输入流可以为应用提供对象持久化的功能,分别调用文件输出流和文件输入流来实现。另一种使用对象流的场景是,在不同主机用socket流在远程通信系统中传递传递数据。


1.ObjectInputStream

对象输入流是用来恢复之前序列化存储的对象,对象输入流可以确保每次从流中读取的对象能匹配Java虚拟机中已经存在的类,根据需求使用标准机制加载类。另外只有支持Serializable或者Externalizable接口的类可以从流中读取出来。对象输入流继承了InputStream中字节读取方法,具体点击这里;另外有一些常用的方法:

boolean readBoolean()

读出布尔类型数据


byte readByte()

读取一个8比特字节


char readChar()

读取一个16比特的字符

image.png

double readDouble()

读取一个64比特的double类型数据


float readFloat()

读取一个32比特的float类型数据


void readFully(byte[] buf)

将流中所有的字节读取到buf字节数组中


void readFully(byte[] buf, int off, int len)

从流中读取len个字节数据到buf中,第一个字节存放在buf[off],第二个字节存放在buf[off+1],以此类推


int readInt()

读取一个32比特的int类型数据


long readLong()

读取一个64比特的long类型数据


Object readObject()

从流中读取一个对象数据,包括对象所属的类,该类的签名,类中非瞬态和非静态的字段值以及所有非超类型的字段值


short readShort()

读取一个16比特的short类型数据


int readUnsignedByte()

读取一个非负的8比特字节,转换为int类型返回


int readUnsignedShort()

读取非负的16比特的short类型数据,转换为int类型返回


String readUTF()

读取一个按UTF-8编码的String类型的数据


2.ObjectOutputStream

对象输出流用来持久化对象的,可以将对象数据写入到文件,如果流是网络流,则可以将对象传输给其他用户进行通信。只有支持Serializable接口的对象支持写入到流,每个序列化对象被编码,包括类的名称和类的签名,以及类的对象中的字段值,以及arrays变量,以及从初始化对象引用的任何其他对象的闭包。


对象输出流继承了OutputStream中字节写的方法,具体点击这里;另外常用的方法有:

void writeBoolean(boolean val)

写一个布尔类型数据


void writeByte(int val)

写一个8比特字节数据,int类型只截取第8位


void writeBytes(String str)

将一个字符串数据当作一个字节序列写入流中


void writeChar(int val)

写入一个16比特的字符数据,参数为int,只截取低16位


void writeChars(String str)

将一个字符串数据当作一个字符序列写入


void writeDouble(double val)

写入一个64比特的double类型数据


void writeFloat(float val)

写入一个32比特的float类型数据


void writeLong(long val)

写入一个64比特的long类型数据


void writeObject(Object obj)

将一个对象写入到流中,包括类的名称和类的签名,以及类的对象中的字段值,

以及arrays变量,以及从初始化对象引用的任何其他对象的闭包。


void writeShort(int val)

将一个16比特的short类型数据写入到流中


void writeUTF(String str)

将一个按UTF-8编码的字符串数据写入到流中


3.例子

分别以读写对象为例子。定义了一个Person类,用来测试读写对象,然后分别建立了两个java项目,一个用来写对象,一个用来读对象;两个java工程都应该包括Person对象的定义,要保证两个工程中Person的包名和类名都一致,代码如下:

Person类代码:

image.png

写对象java代码:

image.png

读对象java代码:

image.png


运行结果截图为:

image.png


Copyright © 2016 广州思洋文化传播有限公司,保留所有权利。 粤ICP备09033321号

与项目经理交流
扫描二维码
与项目经理交流
ciya68