论坛风格切换
您好,欢迎光临本站!   登录 注册新用户
  • 3551阅读
  • 1回复

[软件开发]3.1.3 输入流的复用 [复制链接]

上一主题 下一主题
 
发帖
141299
黑豆
-2859
威望
-2709
贡献值
0
交易币
0
红豆
0
只看楼主 倒序阅读 0 发表于: 2015-01-17
输入流的复用其实有些自我矛盾的应用场景。一方面,在实际应用中,很多需要提供输入数据的API都使用InputStream类作为其参数的类型,比如XML文档的解析API就是一个典型的例子。同时很多数据的提供者允许使用者通过InputStream类的对象的方式来读取其数据,比如通过java.net.HttpURLConnection类的对象打开一个网络连接之后,可以得到用来读取其中数据的InputStream类的对象。如果每个这样的数据源仅有一个接收者,处理起来比较简单;如果有多个接收者,那么就有些复杂。主要的原因在于,从另一个方面出发,按照流本身所代表的抽象含义,数据一旦流过去,就无法被再次使用。如果直接把一个InputStream类的对象传递给一个接收者使用之后再传递给另外一个接收者,后者不能读取到流中的任何数据,因为流的当前读取位置已经到了末尾。这其实可以理解成数据的使用方式和数据本身的区别。InputStream类表示的是数据的使用方式,而并不是数据本身。两者的根本区别在于每个InputStream类的对象作为Java虚拟机中的对象,是有其内部状态的,无法被简单地复用;而纯粹的数据本身是无状态的。在实际开发中,需要复用一个输入流的场景是比较多的。比如,通过HTTP连接获取到的XML文档的输入流
阅读全文地址:http://book.2cto.com/201301/14126.html
快速回复
限100 字节
 
上一个 下一个