¿Alguien me explica qué InputStream
y qué OutputStream
son?
Estoy confundido acerca de los casos de uso para ambos InputStream
y OutputStream
.
Si también pudiera incluir un fragmento de código para acompañar su explicación, sería genial. ¡Gracias!
java
io
inputstream
outputstream
bohemio
fuente
fuente
InputStream se usa para leer, OutputStream para escribir. Están conectados como decoradores entre sí, de modo que puede leer / escribir todos los diferentes tipos de datos de todos los diferentes tipos de fuentes.
Por ejemplo, puede escribir datos primitivos en un archivo:
Para leer los contenidos escritos:
Puede usar otros tipos de transmisiones para mejorar la lectura / escritura. Por ejemplo, puede introducir un búfer para la eficiencia:
Puede escribir otros datos como objetos:
Puede leer desde otras fuentes de entrada diferentes:
Para la mayoría de las secuencias de entrada también hay una secuencia de salida. Puede definir sus propias secuencias para leer / escribir cosas especiales y existen secuencias complejas para leer cosas complejas (por ejemplo, hay secuencias para leer / escribir en formato ZIP).
fuente
Del tutorial de Java :
Una secuencia es una secuencia de datos.
Un programa usa un flujo de entrada para leer datos de una fuente, un elemento a la vez:
Un programa usa una secuencia de salida para escribir datos en un destino, un elemento a la vez:
Código de muestra del tutorial de Oracle:
Este byte usos trenes de programa para copiar xanadu.txt archivo a outagain.txt , escribiendo un byte a la vez
Eche un vistazo a esta pregunta SE para conocer más detalles sobre las secuencias de caracteres avanzadas, que son envoltorios sobre las secuencias de bytes:
flujo de bytes y flujo de caracteres
fuente
lees desde un InputStream y escribes en un OutputStream.
por ejemplo, digamos que desea copiar un archivo. Crearía un FileInputStream para leer del archivo fuente y un FileOutputStream para escribir en el nuevo archivo.
Si sus datos son una secuencia de caracteres, puede usar un FileReader en lugar de un InputStream y un FileWriter en lugar de un OutputStream si lo prefiere.
fuente
close
siempreflush
es, así que no.OutputStream es una clase abstracta que representa la salida de escritura. Hay muchas clases diferentes de OutputStream, y escriben en ciertas cosas (como la pantalla, o Archivos, o conjuntos de bytes, o conexiones de red, etc.). Las clases InputStream acceden a las mismas cosas, pero leen datos de ellas.
Aquí hay un buen ejemplo básico del uso de FileOutputStream y FileInputStream para escribir datos en un archivo y luego volver a leerlo.
fuente
La secuencia de Java es un flujo de datos desde una fuente a un destino. El origen o el destino puede ser un disco, memoria, socket u otros programas. Los datos pueden ser bytes, caracteres u objetos. Lo mismo se aplica a las secuencias de C # o C ++. Una buena metáfora para las corrientes de Java es el agua que fluye de un grifo a una bañera y luego a un drenaje.
Los datos representan la parte estática de la secuencia; Los métodos de lectura y escritura son la parte dinámica de la secuencia.
InputStream
representa un flujo de datos desde el origen,OutputStream
representa un flujo de datos hacia el destino. Finalmente,InputStream
yOutputStream
son abstracciones sobre el acceso de bajo nivel a los datos, como los punteros de archivos C.fuente
Flujo : en términos simples, el flujo es datos, el flujo más genérico es la representación binaria de datos.
Secuencia de entrada : si está leyendo datos de un archivo o de cualquier otra fuente, la secuencia utilizada es la secuencia de entrada. En términos más simples, el flujo de entrada actúa como un canal para leer datos.
Flujo de salida : si desea leer y procesar datos de una fuente (archivo, etc.) primero necesita guardar los datos, el medio para almacenar datos es el flujo de salida.
fuente
Una secuencia de salida generalmente está relacionada con algún destino de datos, como un archivo o una red, etc.
fuente