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 的相关知识,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# objectinputstream
# objectoutputstream
# java序列化与ObjectOutputStream和ObjectInputStream的实例详解
# Java中的ObjectOutputStream类使用
# 实现了
# 小编
# 序列化
# 在此
# 给大家
# 自定义
# 当我们
# 所述
# 给我留言
# 感谢大家
# 相关知识
# 疑问请
# 有任何
# float
# writeInt
# long
# writeFloat
# final
# writeObject
# writeLong
相关文章:
深圳 网站制作,深圳招聘网站哪个比较好一点啊?
如何通过虚拟主机快速搭建个人网站?
用v-html解决Vue.js渲染中html标签不被解析的问题
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
南京网站制作费用,南京远驱官方网站?
如何高效搭建专业期货交易平台网站?
红河网站制作公司,红河事业单位身份证如何上传?
定制建站策划方案_专业建站与网站建设方案一站式指南
专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?
建站之星后台密码遗忘如何找回?
如何制作一个表白网站视频,关于勇敢表白的小标题?
攀枝花网站建设,攀枝花营业执照网上怎么年审?
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
宁波自助建站系统如何快速打造专业企业网站?
TestNG的testng.xml配置文件怎么写
青岛网站建设如何选择本地服务器?
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
高防服务器租用首荐平台,企业级优惠套餐快速部署
武清网站制作公司,天津武清个人营业执照注销查询系统网站?
建站主机CVM配置优化、SEO策略与性能提升指南
商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?
制作证书网站有哪些,全国城建培训中心证书查询官网?
如何在服务器上三步完成建站并提升流量?
如何正确下载安装西数主机建站助手?
Android自定义控件实现温度旋转按钮效果
个人网站制作流程图片大全,个人网站如何注销?
已有域名和空间如何快速搭建网站?
建站之星后台管理:高效配置与模板优化提升用户体验
Bpmn 2.0的XML文件怎么画流程图
如何通过云梦建站系统实现SEO快速优化?
制作电商网页,电商供应链怎么做?
制作企业网站建设方案,怎样建设一个公司网站?
建站之星如何实现网站加密操作?
大连 网站制作,大连天途有线官网?
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?
如何快速搭建高效香港服务器网站?
如何在阿里云完成域名注册与建站?
名字制作网站免费,所有小说网站的名字?
如何在腾讯云服务器快速搭建个人网站?
湖北网站制作公司有哪些,湖北清能集团官网?
如何在自有机房高效搭建专业网站?
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
网站制作的方法有哪些,如何将自己制作的网站发布到网上?
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
建站之星云端配置指南:模板选择与SEO优化一键生成
如何在Windows 2008云服务器安全搭建网站?
建站之星如何开启自定义404页面避免用户流失?
广州美橙建站如何快速搭建多端合一网站?
如何选择域名并搭建高效网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。