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()来进行。