java序列化,二进制和数据流
类的序列化需要支持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序列化,二进制和数据流的更多相关文章
- Java序列化(转载)
引用自:http://developer.51cto.com/art/201506/479979_all.htm 关于 Java 对象序列化您不知道的 5 件事 数年前,当和一个软件团队一起用 Jav ...
- 系统学习 Java IO (十二)----数据流和对象流
目录:系统学习 Java IO---- 目录,概览 DataInputStream/DataOutputStream 允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型. 要想使用 ...
- Serializable详解(1):代码验证Java序列化与反序列化
说明:本文为Serializable详解(1),最后两段内容在翻译上出现歧义(暂时未翻译),将在后续的Serializable(2)文中补充. 介绍:本文根据JDK英文文档翻译而成,本译文并非完全按照 ...
- Java 序列化与反序列化
1.什么是序列化?为什么要序列化? Java 序列化就是指将对象转换为字节序列的过程,而反序列化则是只将字节序列转换成目标对象的过程. 我们都知道,在进行浏览器访问的时候,我们看到的文本.图片.音频. ...
- Java序列化与反序列化
Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?本文围绕这些问题进行了探讨. 1.Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列 ...
- 各种Java序列化性能比较
转载:http://www.jdon.com/concurrent/serialization.html 这里比较Java对象序列化 XML JSON Kryo POF等序列化性能比较. 很多人以 ...
- Java序列化格式详解
RPC的世界,由于涉及到进程间网络远程通信,不可避免的需要将信息序列化后在网络间传送,序列化有两大流派: 文本和二进制. 文本序列化 序列化的实现有很多方式,在异构系统中最常用的就是定义成人类可读的文 ...
- [转] Java序列化与反序列化
原文地址:http://blog.csdn.net/wangloveall/article/details/7992448 Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java ...
- Java序列化的几种方式以及序列化的作用
Java序列化的几种方式以及序列化的作用 本文着重讲解一下Java序列化的相关内容. 如果对Java序列化感兴趣的同学可以研究一下. 一.Java序列化的作用 有的时候我们想要把一个Java对象 ...
- Java序列化机制
java的序列化机制支持将对象序列化为本地文件或者通过网络传输至别处, 而反序列化则可以读取流中的数据, 并将其转换为java对象. 被序列化的类需要实现Serializable接口, 使用Objec ...
随机推荐
- RobotFramework操作浏览器滚动条
RobotFramework操作浏览器滚动条 (2016-12-21 11:52:43) 转载▼ 标签: selenium it 分类: 自动化测试 其实只要是用多了selenium+webdrive ...
- [CF911G]Mass Change Queries
题目大意: 给你一个长度为n的数列a,按顺序进行以下m次操作,每次将区间[l,r]中的所有x变成y,问最后数列是怎样的. 思路: 线段树. 每个线段树结点上维护当前区间每个数分别会变成多少.时间复杂度 ...
- XAMPP 下apache部署网站,多个虚拟机(空间)配置
1.首先修改C盘WINDOWS/system32/drivers/etc目录下的 hosts 文件,用记事本打开,加入: 127.0.0.1 www.a.com 127.0.0.1 www.b.com ...
- 【译】PHP中的Session及其一些安全措施
有一点我们必须承认,大多数web应用程序都离不开session的使用.这篇文章将会结合php以及http协议来分析如何建立一个安全的会话管理机制.我们先简单的了解一些http的知识,从而理解该协议的无 ...
- 扩展gridview轻松实现冻结行和列
在实际的项目中,由于项目的需要,数据量比较大,同时显示栏位也比较多,要做gridview里显示完整,并做到用户体验比较好,这就需要冻结表头和关键列.由于用到的地方比较多,我们可以护展一个gridvie ...
- jquery--动态篇
jQuery中隐藏元素的hide方法 让页面上的元素不可见,一般可以通过设置css的display为none属性.但是通过css直接修改是静态的布局,如果在代码执行的时候,一般是通过js控制元素的st ...
- Delphi 最小化程序到任务栏托盘 增加右键PopMenu
在做中间层时,中间层往往不需要点击关闭时立刻关闭,而是最小化到托盘.故而特意隐藏关闭按钮功能. 1)隐藏退出功能 用PopMenu退出菜单代替 1.增加popMenu退出菜单,绑定到窗体 2.增加变量 ...
- Python使用matplotlib绘制三维曲线
本文主要演示如何使用matplotlib绘制三维图形 代码如下: # -*- coding: UTF-8 -*- import matplotlib as mpl from mpl_toolkits. ...
- maven的安装和eclipse的配置以及构建mahout基本项目
maven介绍在此略过 下载地址: 点击打开链接 windows下载xxx-bin.zip文件 linux下载xxx-bin.tar.gz 这里以windows为例 下载完成直接解压到一个目录下 计算 ...
- represent states with objects
1. The behavior of objects in the real world is more complex than simply being in one state at a tim ...