Различия DataInputStream, GZIPInputStream и InputStream
Я знаю это,
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
,
мои опасения
- В каких случаях мы должны получить InputStream как GZIPInputStream в DataInputStream?
- В каких случаях мы должны получить InputStream как GZIPInputStream?
- В каких случаях мы должны получить InputStream как DataInputStream?
1 ответ
Это действительно разные классы, и документация должна дать вам хорошее описание цели каждого класса.
Вы хотите использовать методы в DataInputStream
что включает в себя чтение примитивных типов и строк из потока хорошо документированным способом? Если так, используйте DataInputStream
обернуть оригинальный поток; иначе нет.
Содержит ли ваш исходный поток данные, сжатые с помощью алгоритма gzip? Если так, используйте GZIPInputStream
; иначе нет. Я не ожидал бы входной поток от HttpURLConnection
представлять сжатые gzip данные; Я надеюсь, что библиотеки HTTP будут выполнять соответствующую инфляцию, основанную на заголовках, но возможно, что они здесь "тупые". (Если это так, вы можете найти альтернативные библиотеки.)