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その場合は、 ;を使用します。そうでなければしないでください。からの入力ストリームがgzip 圧縮されたデータを提示することは期待できません。HttpURLConnectionHTTP ライブラリがヘッダーに基づいて適切なインフレーションを実行することを願っていますが、ここでは "ばかげている" 可能性があります。(その場合は、代替ライブラリを見つけたいと思うかもしれません。)

于 2012-10-17T13:23:40.447 に答える