Saltar la navegación

4.1.- Flujos predefinidos. Entrada y salida estándar.

Cartel que reza: “Entrada”.
Ces-VLC (CC BY-NC)

Tradicionalmente, los usuarios del sistema operativo Unix, Linux y también MS-DOS, han utilizado un tipo de entrada/salida conocida comúnmente por entrada/salida estándar. El fichero de entrada estándar (stdin) es típicamente el teclado. El fichero de salida estándar (stdout) es típicamente la pantalla (o la ventana del terminal). El fichero de salida de error estándar (stderr) también se dirige normalmente a la pantalla, pero se implementa como otro fichero de forma que se pueda distinguir entre la salida normal y (si es necesario) los mensajes de error.

Java tiene acceso a la entrada/salida estándar a través de la clase System. En concreto, los tres ficheros que se implementan son:

  • Stdin. Es un objeto de tipo InputStream, y está definido en la clase System como flujo de entrada estándar. Por defecto es el teclado, pero puede redirigirse para cada host o cada usuario, de forma que se corresponda con cualquier otro dispositivo de entrada.
  • Stdout. System.out implementa stdout como una instancia de la clase PrintStream. Se pueden utilizar los métodos print() y println() con cualquier tipo básico Java como argumento.
  • Stderr. Es un objeto de tipo PrintStream. Es un flujo de salida definido en la clase System y representa la salida de error estándar. Por defecto, es el monitor, aunque es posible redireccionarlo a otro dispositivo de salida.

Para la entrada, se usa el método read para leer de la entrada estándar:

  • int System.in.read();
    • Lee el siguiente byte (char) de la entrada estándar.
  • int System.in.read(byte[] b);
    • Leer un conjunto de bytes de la entrada estándar y lo almacena en el vector b.

Para la salida, se usa el método print para escribir en la salida estándar:

  • System.out.print(String);
    • Muestra el texto en la consola.
  • System.out.println(String);
    • Muestra el texto en la consola y seguidamente efectúa un salto de línea.

Normalmente, para leer valores numéricos, lo que se hace es tomar el valor de la entrada estándar en forma de cadena y entonces usar métodos que permiten transformar el texto a números (int, float, double, etc.) según se requiera.

Funciones de conversión.
Método Funcionamiento
byte Byte.parseByte(String) Convierte una cadena en un número entero de un byte
short Short.parseShort(String) Convierte una cadena en un número entero corto
int Integer.parseInt(String) Convierte una cadena en un número entero
long Long.parseLong(String) Convierte una cadena en un número entero largo
float Float.parseInt(String) Convierte una cadena en un número real simple
double Double.parseInt(String) Convierte una cadena en un número real doble
boolean Boolean.parseBoolean(String) Convierte una cadena en un valor lógico