2012-10-17 1 views
0

나는의 DataInputStream, GZIPInputStream과의 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(); 

mUConnHttpURLConnection입니다 ..

GZIPInputStream extends InflaterInputStream extends FilterInputStream extends InputStream

DataInputStream extends FilterInputStream extends InputStream 

내가 다음의 차이를 알고 싶어 것을 알고있다.

내 우려가

  • 무엇인지 우리가의 DataInputStream에서 GZIPInputStream으로의 InputStream을 얻을해야합니다 경우는?
  • InputStream을 GZIPInputStream으로 가져와야하는 경우는 무엇입니까?
  • 우리는 InputStream을 DataInputStream으로 가져와야 할 때가 있습니까?
+0

각 클래스의 Javadoc에서 이해할 수 없었던 부분은 무엇입니까? 이것은 * 모두 문서화되어 있습니다. * 이런 종류의 문제를 해결하기 위해 포럼이나 SO와상의 할 필요는 없습니다. – EJP

+0

흠 ... 나는 사실 DOCS를 통과했다. 하지만 포럼에서 iy가 내 자정을 청하기로 결정했습니다. – namalfernandolk

답변

1

그들은 실제로 완전히 다른 클래스이며 문서는 각 클래스의 목적이 무엇인지에 대한 좋은 설명을 제공해야합니다.

DataInputStream의 메서드를 사용하여 스트림에서 원시 형식과 문자열을 잘 문서화 된 방식으로 읽는 것을 원하십니까? 그렇다면 DataInputStream을 사용하여 원본 스트림을 래핑하십시오. 그렇지 않으면하지 마십시오.

원본 스트림에 gzip 알고리즘으로 압축 된 데이터가 포함되어 있습니까? 그렇다면 GZIPInputStream을 사용하십시오. 그렇지 않으면하지 마십시오. 나는 HttpURLConnection에서 gzip으로 압축 된 데이터로의 입력 스트림 인을 기대하지 않는다. HTTP 라이브러리가 헤더를 기반으로 적절한 인플레이션을 수행하기를 희망하지만, 여기에서는 "바보"일 가능성이 있습니다. (그렇다면 대안 라이브러리를 찾을 수도 있습니다.)

+0

Jon에게 감사드립니다. DataInputStream의 메소드를 사용하고자한다면 DataInputStream에 의해 InputStream을 래핑 할 수 있다는 것은 사실입니다. 그렇다면, 그것을 InputStream 권한이 아닌 DataInputStream으로 선언해야합니까? 선언 형이 InputStream 인 경우, InputStream를 DataInputStream 및 InputStream로서 취해지면, 그 차이는 있습니까? – namalfernandolk

+0

내가 InputStream을 가져왔다면 어떤 문제가있을 것입니다. mIstr3 = new DataInputStream (mUConn.getInputStream()); as InputStream mIstr3 = mUConn.getInputStream() ;? – namalfernandolk

+0

@NamalFernando : 미묘한 차이가있을 수 있지만, 다른 점을 제외하고는 무의미하고 혼란스러워 할 것입니다. 'InputStream'에서 메소드 만 필요하다면, 왜 그것을 감싸는 것입니까? 그저 그것을 위해 아무 것도하지 마십시오. –