你实际上在看两种不同的流.
该Writer
/ Reader
类和子类是用于读取/写入基于字符的数据.它负责Java内部UTF-16文本表示与外部使用的字符编码之间的转换.该BufferedReader
课程增加了readLine()
一种了解终端制造者的方法.
该InputStream
/ OutputStream
类和子类是用于读取和写入基于字节的数据,而无需对字符编码的任何假设,或者说数据是文本.由于它避开了这些假设,"线"没有明确的含义,因此BufferedInputStream
该类没有readLine()
方法.
(顺便提一下,DataInputStream
确实有一个readLine()
方法,但它已被弃用,因为它已被破坏.它假设编码等在某些平台上无效!)
在您的特定示例中,代码是不对称的,因为它设计用于与之通信的HTTP服务是不对称的.该服务期望具有二进制内容的请求(使用DataOutputStream
包装器编码),并提供具有文本内容的响应.这并不是特别不寻常......或者是错误的.
将"输入"写入服务器到"输出"的奇怪之处仅仅是透视问题.简单来说,OutputStream/Writer是您"写入"的东西(即数据接收器),而InputStream或Reader是您"读取"的东西(即数据源).这就是它的方式,一旦你习惯它就一点都不奇怪.
归档时间: |
|
查看次数: |
2145 次 |
最近记录: |