Icono play
Java
IO estándar

Cuando se desarrolla una aplicación o un programa, este recibe datos o información para procesar y luego entregar un resultado. 

¿Qué es el paquete Java.io?

El paquete java.io contiene todo lo necesario para recibir los datos o información, procesarlos y entregar un resultado de una aplicación o programa.

En Java la entrada y salida de datos se hace a través de streams, este flujo de datos, por lo general, se recibe a través del teclado y se entrega por medio de la pantalla.

Los streams pueden manejar bytes, datos primitivos y hasta objetos, para ello la clase java.io ofrece varias clases cuya función es gestionar la comunicación del programa.

Funcionamiento de IO en Java

Para cumplir con su tarea, el paquete java.io tiene una serie de clases separadas en dos grandes grupos:

InputStream

Es una clase abstracta que contiene todos los métodos que sirven para leer datos en los programas en Java. Esta lectura puede hacerse desde diversas fuentes. Soporta algunos métodos como: 

  • read(): lee un byte de datos del flujo de entrada.
  • available(): devuelve el número de bytes disponibles en el flujo de entrada.
  • skips(): descarta el número de bytes especificados.
  • close(): cierra el flujo de entrada.

También tiene subclases que permiten implementar mayor funcionalidad, entre ellas: 

  • FileInputStream.
  • ByteArrayInputStream.
  • ObjectInputStream.

OutputStream

Es la clase abstracta en Java que contiene los métodos para escribir datos de salida. Puede hacerse por diferentes medios. Soporta algunos métodos como:

  • write(): escribe el byte en el flujo de salida.
  • flush(): se asegura de que los bytes que aún no se han escrito lo hagan.
  • close(): cierra el flujo de salida.

Entre las subclases que implementan la funcionalidad de esta clase tenemos:

  • FileOutputStream.
  • FilterOutputStream.
  • PipedOutputStream.

Con la práctica, el uso de estos paquetes y las herramientas que suministran se volverá más fluido y, por lo tanto, será más sencillo codificar cualquier proyecto sin que esto represente una dificultad.

¿Cómo leer datos primitivos en Java?

Para leer datos primitivos en Java se hace de la siguiente manera:

Entrada por teclado y salida por pantalla con IO en Java

La entrada por teclado y salida por pantalla, conocidas como el método estándar para dar y recibir información de cualquier aplicación que se esté desarrollando, se relacionan con la clase System.

Hay 2 objetos que son esenciales para este aspecto:

  • System.in que es el objeto que recibe datos desde el teclado o el ratón y es parte de la clase InputStream.
  • System.out un objeto que imprime los datos que se van a mostrar en la salida que en este caso es la pantalla.

Otro aspecto importante a tomar es la clase Scanner que, combinada con lo mencionado anteriormente, permite la entrada de datos primitivos cuando se está codificando en Java.

Puede comprenderse mejor al mirar el siguiente ejemplo básico:

import java.util.Scanner;
public class ScannerMain {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        System.out.println("Escribe tu nombre");
        String nombre = scanner.nextLine();
        System.out.println("Escribe tu edad");
        int edad = scanner.nextInt();

        System.out.println("Tu nombre es: " + nombre);
        System.out.println("Tu edad es: " + edad);

    }
}

Métodos de la clase Scanner

Por cada tipo de dato primitivo a leer, la clase Scanner utiliza un método, como muestra esta relación:

Método Función
next() devolver el siguiente token de ese scanner
nextDouble() Toma el siguiente token de la entrada como un dato double
nextInt() Toma el siguiente token de la entrada como un dato int
nextLine() Hace avanzar el scanner más allá de la línea actual y devuelve el contenido de la que se ha saltado
nextLong() Toma el siguiente token de la entrada como un dato de tipo Long
close() cerrar el Scanner.
hasNext() verificar si hay otro token en esa entrada
hasNextDouble() verificar si el siguiente token es un dato de tipo double
hasNextInt() verificar si el siguiente token puede ser interpretado como un valor de tipo entero
hasNetxLine() verificar si hay otra línea
hasNextLong() verificar si el siguiente token es un dato de tipo long

Ahora bien, no siempre el programa va a requerir datos de tipo primitivo, en muchas oportunidades será necesario el uso de ficheros, matrices o dispositivos externos. 

Para estas situaciones, Java dispone de otras herramientas más complejas que funcionan a través de métodos y clases que dependen del paquete java.io.

¿Todavía no te has apuntado a nuestro Bootcamp?
Tenemos muchos cursos para ofrecerte y ¡TOTALMENTE GRATIS! Estos son algunos de ellos: