0

我知道,

GZIPInputStream extends InflaterInputStream extends FilterInputStream extends InputStream

DataInputStream extends FilterInputStream extends InputStream 

我想知道关注之间的区别..

InputStream mIstr1 = new DataInputStream(new GZIPInputStream(mUConn.getInputStream()));
InputStream mIstr2 = new GZIPInputStream(mUConn.getInputStream());
InputStream mIstr3 = new DataInputStream(mUConn.getInputStream());
InputStream mIstr4 = mUConn.getInputStream();

mUConn是一个HttpURLConnection

我的担忧是

  • 什么情况下我们必须在 DataInputStream 中获取 InputStream 作为 GZIPInputStream?
  • 什么情况下我们必须将 InputStream 获取为 GZIPInputStream?
  • 什么情况下我们必须将 InputStream 作为 DataInputStream?
4

1 回答 1

1

它们确实是完全不同的类,文档应​​该很好地描述每个类的用途。

您想使用DataInputStream涉及以有据可查的方式从流中读取原始类型和字符串的方法吗?如果是,则用于DataInputStream包装原始流;否则不要。

您的原始流是否包含使用 gzip 算法压缩的数据?如果是这样,请使用GZIPInputStream; 否则不要。我不希望来自的输入流HttpURLConnection呈现 gzip 压缩的数据;我希望 HTTP 库会根据标头执行适当的膨胀,但它们可能在这里“愚蠢”。(如果是这种情况,您可能希望找到替代库。)

于 2012-10-17T13:23:40.447 回答