IO Streams:对象流
简介
正如数据流支持原始数据类型的I / O一样,对象流支持对象的I / O。标准类中的大多数但不是全部都支持对象的序列化。那些实现标记接口Serializable的那些。
对象流类是ObjectInputStream和ObjectOutputStream。这些类实现了ObjectInput和ObjectOutput,它们是DataInput和DataOutput的子接口。这意味着数据流中涵盖的所有原始数据I / O方法也在对象流中实现。因此,对象流可以包含原始值和对象值的混合。 ObjectStreams示例说明了这一点。 ObjectStreams创建与DataStream相同的应用程序,并进行了一些更改。首先,价格现在是BigDecimalobjects,以更好地表示分数值。其次,将Calendar对象写入数据文件,指示发票日期。
如果readObject()不返回预期的对象类型,尝试将其转换为正确的类型可能会引发ClassNotFoundException。在这个简单的例子中,这不可能发生,所以我们不试图捕捉异常。相反,我们通过向主方法的throws子句添加ClassNotFoundException,通知编译器我们知道这个问题。
读写复杂对象
Object ob = new Object();
out.writeObject(ob);
out.writeObject(ob);
每个writeObject必须被一个readObject匹配,所以读取流的代码看起来像这样:
Object ob1 = in.readObject();
Object ob2 = in.readObject();
这导致两个变量ob1和ob2是对单个对象的引用。 然而,如果单个对象被写入两个不同的流,则它被有效地复制 - 读取两个流的单个程序将看到两个不同的对象。
IO Streams:对象流的更多相关文章
- java对象流(二)
对象流,可以将java中的对象转为字节进行输出.将对象写入文件时.文件输出流是将字节写入到文件中. 对象流是将给定的对象转化为一组字节.writeObject()方法就是将对象转为字节. 对象流,读的 ...
- day03 对象流与序列化
对象流 java.io.ObjectOutputStream和ObjectInputSteam 对象流是一对高级流,在流连接中的作用是进行对象的序列化与反序列化. 对象序列化:将一个java对象按照其 ...
- Java:IO流其他类(字节数组流、字符数组流、数据流、打印流、Properities、对象流、管道流、随机访问、序列流、字符串读写流)
一.字节数组流: 类 ByteArrayInputStream:在构造函数的时候,需要接受数据源,而且数据源是一个字节数组. 包含一个内部缓冲区,该缓冲区包含从流中读取的字节.内部计数器跟踪 read ...
- Java IO流之对象流
对象流 1.1对象流简介 1.2对象流分类 输入流字节流处理流:ObjectInputStream,将序列化以后的字节存储到本地文件 输出流字节流处理流:ObjectOutputStream 1.3序 ...
- Java IO(Properties/对象序列化/打印流/commons-io)
Java IO(Properties/对象序列化/打印流/commons-io) Properties Properties 类表示了一个持久的属性集.Properties 可保存在流中或从流中加载. ...
- Java之IO流进阶篇:内存流,打印流,对象流
Java中的IO流,即为输入输出流.所谓输入输出流,都是相对于程序而言,程序就是这个参照物.一张图看懂输入输出流: 输入流抽象基类:InputStream,Reader 输出流抽象基类:OutputS ...
- Java文件与io——打印流和对象流
打印流的主要功能是用于输出,在整个IO包中打印流分为两种类型: 字节打印流:PrintStream 字符打印流:PrintWriter 打印流可以很方便的进行输出 public class Print ...
- Java基础IO类之对象流与序列化
对象流的两个类: ObjectOutputStream:将Java对象的基本数据类型和图形写入OutputStream ObjectInputStream:对以前使用ObjectOutputStrea ...
- 对象流,它们是一对高级流,负责即将java对象与字节之间在读写的过程中进行转换。 * java.io.ObjectOutputStream * java.io.ObjectInputStream
package seday06; import java.io.Serializable;import java.util.Arrays; /** * @author xingsir * 使用当前类来 ...
随机推荐
- pat甲级1114
1114 Family Property(25 分) This time, you are supposed to help us collect the data for family-owned ...
- vue组件 $children,$refs,$parent的使用
如果项目很大,组件很多,怎么样才能准确的.快速的寻找到我们想要的组件了?? 1)$refs 首先你的给子组件做标记.demo :<firstchild ref="one"&g ...
- maven操作手册
===Maven的安装=== http://blog.csdn.net/yang5726685/article/details/56486479 ===Maven的jar包仓库地址配置=== http ...
- lsscsi 与 cat /proc/scsi/scsi
[root@localhost ~]# lsscsi[0:0:0:0] disk SEAGATE ST300MM0048 N001 /dev/sda [0:0:2:0] ...
- 修改android studio中的avd sdk路径、avd sdk找不到的解决方案
要进行Android应用程序的开发,首先就要搭建好Android的开发环境,所需要的工具有如下4个:1.java JDK:2.Android SDK:3.Eclipse:4.ADT 1.java JD ...
- Jquery的简单API
dsfsdjgsdjgsdjkg <script>console.log('erftwet')</script>
- SummerVocation_Learning--java的线程死锁
public class Test_DeadLock implements Runnable { ; static Object o1 = new Object(),o2 = new Object() ...
- C++ 学习笔记 (八)重载 重写 重定义以及名字覆盖
学习C++必定会遇到重载.重写.重定义.概念的东西多也是学习C++蛋疼之处,但是还是得弄懂,学懂了也就不觉得多了. 概念,特点: 重载: 直白点说就是函数名字相同,传参的个数,类型不一样.判断标准在于 ...
- MySql学习笔记04
复习 day01 数据库相关: create database db4 character set utf8; show databases; show create database db4; dr ...
- 【JAVA】JVM常用工具
JDK内置工具使用 jps(Java Virtual Machine Process Status Tool) 查看所有的jvm进程,包括进程ID,进程启动的路径等等. jstack(Java ...