网络传输时既有管道流(PipedInputStream 与 PipedOutStream)又有序列化对象反序列化对象(ObjectOutputStream与 ObjectInputStream)

Posted 一乐yile

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络传输时既有管道流(PipedInputStream 与 PipedOutStream)又有序列化对象反序列化对象(ObjectOutputStream与 ObjectInputStream)相关的知识,希望对你有一定的参考价值。

网络传输时既有管道流(PipedInputStream 与 PipedOutStream)又有序列化对象、反序列化对象(ObjectOutputStream与 ObjectInputStream),还有在集合中、流中都有的身影的Properties究竟是何方神物?我们该怎么选择呢?

 

▪管道流:多线程之间的流的读与写----字节层面上  [学多线程时的浪漫相遇管道流---传输字节流]

class PipedInputStream extends InputStream

管道输入流应连接到管道输出流; 管道输入流然后提供写入管道输出流的任何数据字节。 典型地,数据被从一个读PipedInputStream对象由一个线程并且数据被写入到对应的​PipedOutputStream通过一些其它线程。 不建议尝试从单个线程使用这两个对象,因为它可能会使线程死锁。 管道输入流包含一个缓冲区,在读取操作中将读取操作与限制内的操作相分离的管道被认为是broken如果正在提供的数据字节到连接的管道输出流中的线程不再存活。

 

▪序列化、反序列化对象 [学IO流时的浪漫相遇序列化、反序列化对象---传输对象流]

Class ObjectInputStream  extends InputStream implements ObjectInput, ObjectStreamConstants : 将字节传输转化成对象传输

▪反序列化对象:ObjectInputStream用于恢复先前序列化的对象。 其他用途包括使用套接字流在主机之间传递对象,或者在远程通信系统中进行封送和解组参数

 

属性集合:Properties [学集合时的浪漫相遇Properties知其结构继承hashtable,设置构造方法规定了键值对为字符串类型;

学IO流时的浪漫相遇Properties想起来其内部还有两个超级棒的方法save(流对象)、load(流对象)-----方便使用流的操作]

class Properties extends Hashtable

结构上继承:集合Hastable 【键值对的形式存取结构,且设置通过构造方法设置属性名(key)、属性值(value)都为字符串类型】

String getProperty(String key) 通过属性列表中指定的键获取属性。

构造方法:

public synchronized Object setProperty(String key, String value)

return put(key, value);

内部定义了与流有关的方法:load()、save() 方法

load(InputStream inStream)、load(Reader reader)、save(OutputStream out, String comments)

 

总结:Properties属性集合:特点1:结构上继承了Hashtable的键值对结构,通过设置构造方法的设置规定,

得到特点2:键值对都是字符串类型,即属性名、属性值都是字符串类型

特点3:内部定义了方法:save(流对象)、load(流对象),所以与流操作有关

特点4:没有泛型


作者:一乐乐​


以上是关于网络传输时既有管道流(PipedInputStream 与 PipedOutStream)又有序列化对象反序列化对象(ObjectOutputStream与 ObjectInputStream)的主要内容,如果未能解决你的问题,请参考以下文章

当输入流管道传输到多个输出流时,缓冲区级别会发生啥?

Java网络编程中怎样用管道流

将原始 PCM 流通过管道传输到 libsndfile

将 ffmpeg 流通过管道传输到 sox rec

线程间通讯-管道输入输出流(源码分析)

最大流算法(网络流问题)