网络传输时既有管道流(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:没有泛型!