Qué es la entrada y salida

En primer lugar, parémonos a pensar qué quiere decir en el contexto de un programa "entrada y salida", antes de meternos exactamente en cómo se organiza la entrada y salida de un programa en Java.

En informática, un programa es esencialmente un conjunto de instrucciones que reciben una entrada y producen una salida. Estas instrucciones, que pueden ser uno o varios algoritmos, tienen como objetivo resolver un problema, generar un resultado o realizar una tarea específica. Pero un algoritmo por sí solo no es suficiente; necesita una forma de comunicarse con el mundo exterior para ser realmente útil.

Para que un programa funcione, debe poder compartir información con el usuario o con otros sistemas. La forma más común de hacerlo es a través de la salida estándar, conocida como STDOUT. En Java, por ejemplo, cuando usamos System.out.println, estamos enviando información a esta salida estándar. Esta salida se conecta automáticamente con el sistema operativo, que la muestra en la terminal o en la consola del entorno de desarrollo integrado (IDE) que estemos utilizando, como NetBeans o Eclipse.

Por otro lado, para que un programa pueda comenzar a funcionar, necesita recibir información desde el exterior. Esta información se proporciona a través de la entrada estándar, o STDIN. En Java, esta entrada se gestiona mediante el objeto System.in. Normalmente, esta entrada estándar está conectada al teclado, de modo que cuando escribimos en la terminal o en la ventana del IDE, esos datos se envían al programa a través de System.in. Así, podemos proporcionarle al programa los datos necesarios para que ejecute sus algoritmos y, posteriormente, comunicar los resultados mediante la salida estándar.

Con solo la entrada y salida estándar, un programa ya puede funcionar: recibe datos por la entrada estándar y muestra resultados por la salida estándar. Sin embargo, en muchos casos, esto no es suficiente. Los programas suelen necesitar fuentes adicionales de entrada y salida. Por ejemplo, pueden leer datos desde un archivo para obtener información persistente o guardar su estado en disco para recuperarlo en futuras ejecuciones. En estos casos, los archivos actúan como dispositivos de entrada y salida adicionales.

Pero la entrada y salida pueden ir mucho más allá. Un programa puede conectarse a un servidor a través de Internet, utilizando protocolos como TCP/IP para enviar y recibir información. También puede interactuar con hardware específico, como puertos USB o puertos serie, que funcionan como dispositivos de entrada y salida para enviar o recibir datos.

Incluso, la entrada y salida pueden ser conceptos más abstractos, como la comunicación entre diferentes programas que se ejecutan simultáneamente. Estos programas pueden intercambiar información para coordinar tareas o compartir resultados.

En definitiva, un programa no sería nada sin las entradas que le permiten obtener información del mundo exterior y las salidas que le permiten comunicar resultados o cualquier otro dato relevante. La gestión adecuada de estas entradas y salidas es fundamental para que un programa cumpla su propósito y se integre correctamente con su entorno.

Lista de reproducción
  1. 1
    Introducción al taller
    2 minutos
  2. 2
    Qué es la entrada y salida
    4 minutos
  3. 3
    Streams de entrada y salida en Java
    7 minutos
  4. 4
    FileOutputStream
    9 minutos
  5. 5
    FileInputStream
    13 minutos
  6. 6
    try-with-resources
    2 minutos
  7. 7
    ObjectOutputStream y OutputInputStream
    6 minutos
  8. 8
    Object streams con Strings y Objects
    6 minutos
  9. 9
    Serializando clases
    7 minutos
  10. 10
    Los peligros de Serializable
    4 minutos
  11. 11
    BufferedOutputStream
    6 minutos
  12. 12
    Envolviendo varios OutputStreams
    2 minutos
  13. 13
    BufferedInputStream y rebobinado de streams
    9 minutos
  14. 14
    Readers y Writers en Java
    3 minutos
  15. 15
    Writer y FileWriter
    4 minutos
  16. 16
    Reader, FileReader y BufferedReader
    4 minutos
  17. 17
    InputStreamReader y OutputStreamWriter
    6 minutos
  18. 18
    PrintStream y PrintWriter
    5 minutos