¿Cuál es la diferencia entre Reader y InputStream? ¿Y cuándo usar qué? Si puedo usar Reader para leer caracteres, ¿por qué usaré inputstream, supongo que para leer objetos?¿Cuál es la diferencia entre Reader y InputStream?
Respuesta
Un InputStream es el método original para obtener información de un recurso. Captura el byte de datos por byte sin realizar ningún tipo de traducción. Si está leyendo datos de imágenes, o cualquier archivo binario, esta es la secuencia que debe usar.
Un lector está diseñado para secuencias de caracteres. Si la información que está leyendo es todo texto, entonces el Reader se encargará de la decodificación del personaje y le dará caracteres Unicode del flujo de entrada sin formato. Si está leyendo cualquier tipo de texto, esta es la secuencia que debe usar.
Puede envolver un InputStream y convertirlo en un lector utilizando la clase InputStreamReader.
Reader reader = new InputStreamReader(inputStream, StandardCharsets.UTF_8);
Uno acepta bytes y el otro acepta caracteres.
InputStreams se utilizan para leer bytes de una secuencia. Por lo tanto, son útiles para datos binarios, como imágenes, video y objetos serializados.
Los lectores, por otro lado, son secuencias de caracteres por lo que se utilizan mejor para leer datos de caracteres.
Cuándo usar 'read()' byte por byte y cuándo usar 'read (byte [])' array of byte. Como creo que leer array es siempre mejor. entonces puedes darme un ejemplo en donde usar 'read()' byte OR 'read (byte [])' array of byte. O 'BufferedInputStream'.? – UnKnown
supongo que la fuente de confusión es que InputStream.read()
devuelve un int
y Reader.read()
también devuelve un int
.
La diferencia es que InputStream.read()
valores de byte de retorno entre 0 y 255 correspondiente a los contenidos primas del flujo de bytes y Reader.read()
devolver el valor de carácter, que es entre 0 y 65.357
Un InputStream
le permite leer el contenido byte byte, por ejemplo, los contenidos "a ‡ a" se leen como 97, 226, 128, 161, 97 donde a -> U+0061 -> 0x61 -> 97
y ‡ -> U+2021 -> 0xE280A1 (utf-8 encoding of 0x2021) -> 226 128 161
.
Un Reader
le permite leer el contenido del carácter por carácter por lo que los contenidos "un ‡ a" se leen como 97, 8225, 97, donde a -> U+0061 -> 0x61 -> 97
y ‡ -> U+2021 -> 0x2021 -> 8225
.
- 1. Diferencia entre StreamWriter/Reader y StringWriter/Readerll
- 2. ¿Cuál es la diferencia entre {0} y ""?
- 3. Cuál es la diferencia entre = y: =
- 4. ¿Cuál es la diferencia entre .ToString (+) y ""
- 5. Cuál es la diferencia entre $ (...) y `...`
- 6. ¿cuál es la diferencia entre:.! y: r !?
- 7. ¿Cuál es la diferencia entre ".equals" y "=="?
- 8. ¿Cuál es la diferencia entre dict() y {}?
- 9. ¿Cuál es la diferencia entre `##` y `hashCode`?
- 10. ¿Cuál es la diferencia entre "$^N" y "$ +"?
- 11. ¿Cuál es la diferencia entre [indefinido] y [,]?
- 12. ¿Cuál es la diferencia entre + = y = +?
- 13. ¿Cuál es la diferencia entre " " y ""?
- 14. Cuál es la diferencia entre $ y jQuery
- 15. ¿Cuál es la diferencia entre "mutex" y "lock"?
- 16. OpenGL (ES) - ¿Cuál es la diferencia entre frustum y orto?
- 17. Cuál es la diferencia entre la función() {}() y la función() {}()
- 18. ¿Cuál es la diferencia entre la abstracción y la encapsulación?
- 19. ¿Cuál es la diferencia entre @ y $ y% en MSBuild?
- 20. ¿Cuál es la diferencia entre SQLiteOpenHelper.close() y SQLiteDatabase.close()?
- 21. ¿Cuál es la diferencia entre la vinculación estática y dinámica?
- 22. ¿Cuál es la diferencia entre la sección .got y .got.plt?
- 23. ¿Cuál es la diferencia entre el colado y la coerción?
- 24. ¿cuál es la diferencia entre el complemento y la biblioteca?
- 25. ¿Cuál es la diferencia entre el casting y la conversión?
- 26. ¿Cuál es la diferencia entre WPF y la aplicación Silverlight?
- 27. ¿Cuál es la diferencia entre uno mismo y la ventana?
- 28. ¿Cuál es la diferencia entre CookieContainer y la colección Response.Cookies?
- 29. ¿Cuál es la diferencia entre la relación Composición y Asociación?
- 30. ¿cuál es la diferencia entre el material y la textura?
En cuanto a "Supongo que para leer objetos?", Hay flujos de entrada/salida especiales para leer/escribir objetos Java. Son ObjectInputStream y ObjectOutputStream respectivamente, y son parte del marco de serialización más grande. http://java.sun.com/developer/technicalArticles/Programming/serialization/ Pero ese es solo un uso de las transmisiones de entrada/salida, otras podrían estar enviando datos a través de un socket, etc. –