类的序列化需要支持Serializable接口,如果类支持序列化,可以通过ObjectOutPutStream和ObjectInputStream将对象和Stream之间进行方便的转换。

首先来 看一下ObjectOutPutStream和ObjectInputStream的构造函数和常用方法:

public ObjectOutputStream(OutputStream out) throws IOException :参数是输出流

public ObjectInputStream(InputStream in) throws IOException:参数是输入流

ObjectOutputStream.writeObject(Object):将对象序列化并写入到OutputStream中。

ObjectInputStream.readObject():将InputStream读出对象,这里可能需要强制转换。

**OutPutStream:首先代表这是个输出流,前面的**代表该输出流中存放的数据类型,可以是ByteArray,也可以是file,也可以是Data(代表java中的类对象)。

**InPutStream:首先是一个输入流,前面的**代表输入流从那种类型读取数据,可以是ByteArray,代表将数据读出到字节数组中。可以是Data,表示将数据读成Java中的类对象。

字节流包含两个顶层抽象类:InputStream和OutputStream。

1:字节流的两个顶层类是抽象类,分别是:InputStream和OutputStream。

2:每个抽象类都有子类来实现具体的功能,处理不同的设备的输入和输  出。

下面简单介绍字节流的几个常用子类:::

字节流类

功能简单介绍

DataInputStream

包含了读取Java标准数据类型的输入流

DataOutputStream

包含了写Java标准数据类型的输出流

ByteArrayInputStream

从字节数组读取的输入流

ByteArrayOutputStream

写入字节数组的输出流

FileInputStream

从文件读入的输入流

FileOutputStream

写入文件的输出流

PrintStream

包含最常见的Print()和Println()的输出流

PushbackInputStream

返回一个字节到输入流,主要用于编译器的实现

PipedInputStream

输出管道

PipedOutputStream

输入管道

SequenceInputStream

将n个输入流联合起来,一个接一个按一定顺序读取

RandomAccessFile

随机访问文件

BufferInputStream

缓冲输入流

BufferOutputStream

缓冲输出流

FilterInputStream

实现了InputStream Interface

FilterOutputStream

实现了OutputStream Interface

InputStream

抽象类,描述流的输入

OutputStream

抽象类,描述流的输入

抽象类InputStream和OutpurStream定义了实用的方法,其中最主要的是read()和

write()。这两个方法在InputStream和OutputStream中声明为抽象方法,由子流类overwrite实现。

2:每个抽象类都有子类来实现具体的功能,处理不同的设备的输入和输  出。

下面简单介绍字节流的几个常用子类:::

字节流类

功能简单介绍

DataInputStream

包含了读取Java标准数据类型的输入流

DataOutputStream

包含了写Java标准数据类型的输出流

ByteArrayInputStream

从字节数组读取的输入流

ByteArrayOutputStream

写入字节数组的输出流

FileInputStream

从文件读入的输入流

FileOutputStream

写入文件的输出流

PrintStream

包含最常见的Print()和Println()的输出流

PushbackInputStream

返回一个字节到输入流,主要用于编译器的实现

PipedInputStream

输出管道

PipedOutputStream

输入管道

SequenceInputStream

将n个输入流联合起来,一个接一个按一定顺序读取

RandomAccessFile

随机访问文件

BufferInputStream

缓冲输入流

BufferOutputStream

缓冲输出流

FilterInputStream

实现了InputStream Interface

FilterOutputStream

实现了OutputStream Interface

InputStream

抽象类,描述流的输入

OutputStream

抽象类,描述流的输入

抽象类InputStream和OutpurStream定义了实用的方法,其中最主要的是read()和

write()。这两个方法在InputStream和OutputStream中声明为抽象方法,由子流类overwrite实现。

在网络传输的过程中,是通过socket.getInputStream()和getOutPutStream()来进行。

java序列化,二进制和数据流的更多相关文章

  1. Java序列化(转载)

    引用自:http://developer.51cto.com/art/201506/479979_all.htm 关于 Java 对象序列化您不知道的 5 件事 数年前,当和一个软件团队一起用 Jav ...

  2. 系统学习 Java IO (十二)----数据流和对象流

    目录:系统学习 Java IO---- 目录,概览 DataInputStream/DataOutputStream 允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型. 要想使用 ...

  3. Serializable详解(1):代码验证Java序列化与反序列化

    说明:本文为Serializable详解(1),最后两段内容在翻译上出现歧义(暂时未翻译),将在后续的Serializable(2)文中补充. 介绍:本文根据JDK英文文档翻译而成,本译文并非完全按照 ...

  4. Java 序列化与反序列化

    1.什么是序列化?为什么要序列化? Java 序列化就是指将对象转换为字节序列的过程,而反序列化则是只将字节序列转换成目标对象的过程. 我们都知道,在进行浏览器访问的时候,我们看到的文本.图片.音频. ...

  5. Java序列化与反序列化

    Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?本文围绕这些问题进行了探讨. 1.Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列 ...

  6. 各种Java序列化性能比较

    转载:http://www.jdon.com/concurrent/serialization.html 这里比较Java对象序列化 XML JSON  Kryo  POF等序列化性能比较. 很多人以 ...

  7. Java序列化格式详解

    RPC的世界,由于涉及到进程间网络远程通信,不可避免的需要将信息序列化后在网络间传送,序列化有两大流派: 文本和二进制. 文本序列化 序列化的实现有很多方式,在异构系统中最常用的就是定义成人类可读的文 ...

  8. [转] Java序列化与反序列化

    原文地址:http://blog.csdn.net/wangloveall/article/details/7992448 Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java ...

  9. Java序列化的几种方式以及序列化的作用

    Java序列化的几种方式以及序列化的作用 本文着重讲解一下Java序列化的相关内容. 如果对Java序列化感兴趣的同学可以研究一下. 一.Java序列化的作用    有的时候我们想要把一个Java对象 ...

  10. Java序列化机制

    java的序列化机制支持将对象序列化为本地文件或者通过网络传输至别处, 而反序列化则可以读取流中的数据, 并将其转换为java对象. 被序列化的类需要实现Serializable接口, 使用Objec ...

随机推荐

  1. Java加密解密大全

    ChinaSEI系列讲义(By 郭克华)   Java加密解密方法大全                     如果有文字等小错,请多包涵.在不盈利的情况下,欢迎免费传播. 版权所有.郭克华 本讲义经 ...

  2. cnblogs的代码高亮

    由于不喜欢cnblogs原来的代码高亮方案,于是自己瞎搞,外加看这位大神的blog以及BZOJ的代码高亮,终于是搞出来了...讲讲怎么弄吧. 当然对于了解css的大神可以无视以下文字…… 其实就是登上 ...

  3. [Atcoder Grand Contest 001] Tutorial

    Link: AGC001 传送门 A: …… #include <bits/stdc++.h> using namespace std; ; ]; int main() { scanf(& ...

  4. [UOJ300]吉夫特

    直接上lucas定理,可以得到$\binom nm=1$等价于$m$是$n$的子集(二进制) 因为数字两两不同,所以设$f_i$表示以$i$开头的满足要求的序列有多少个,转移就是$f_i\gets f ...

  5. 使用UNetbootin工具制作的CentOS 6.9镜像U盘在启动安装过程中出现:unable to read package metadata.this may be due to a missing repodata directory

    1.制作: 2.重命名文件 (前) (后) 这些文件是拷贝另一个得来的,并且后面的命名是根据repomd.xm这个文件来的. 参考: http://blog.csdn.net/maijunjin/ar ...

  6. SQLite 使用技巧

    http://blog.csdn.net/beifengdelei/article/details/7166056 SQLite自增ID自段使用方法为 INTEGER PRIMARY KEY AUTO ...

  7. 深入理解JavaScript中的函数操作——《JavaScript忍者秘籍》总结

    匿名函数 对于什么是匿名函数,这里就不做过多介绍了.我们需要知道的是,对于JavaScript而言,匿名函数是一个很重要且具有逻辑性的特性.通常,匿名函数的使用情况是:创建一个供以后使用的函数.简单的 ...

  8. Solr6.6.0 用 SimplePostTool与界面dataimport索引方式区别

    通过测试发现用SimplePostTool与solr界面dataimport索引数据的结果有如下区别: 1.SimplePostTool索引数据对结构化数据文件索引比较合适,比如csv/json/xm ...

  9. windowsclient开发--使用、屏蔽一些快捷键

    每一个windowsclient都有自己的一些快捷键,有的是windows系统提供的. 今天就要与大家分享一下.在windowsclient开发过程中对按键的处理. ESC按键 Duilib这个库中, ...

  10. ActiveMQ消息游标 --转载

    转:http://blog.csdn.net/m13321169565/article/details/8081358 在Activemq以前的版本中,broker会把待发送的消息保存在内存中.这种方 ...