En este tutorial, aprenderemos sobre la clase Java InputStream y sus métodos con la ayuda de un ejemplo.
La InputStream
clase del java.io
paquete es una superclase abstracta que representa un flujo de entrada de bytes.
Dado que InputStream
es una clase abstracta, no es útil por sí misma. Sin embargo, sus subclases se pueden utilizar para leer datos.
Subclases de InputStream
Para usar la funcionalidad de InputStream
, podemos usar sus subclases. Algunos de ellos son:
- FileInputStream
- ByteArrayInputStream
- ObjectInputStream
Aprenderemos sobre todas estas subclases en el próximo tutorial.
Crear un InputStream
Para crear un InputStream, java.io.InputStream
primero debemos importar el paquete. Una vez que importamos el paquete, así es como podemos crear el flujo de entrada.
// Creates an InputStream InputStream object1 = new FileInputStream();
Aquí, hemos creado un flujo de entrada usando FileInputStream
. Es porque InputStream
es una clase abstracta. Por tanto, no podemos crear un objeto de InputStream
.
Nota : También podemos crear un flujo de entrada a partir de otras subclases de InputStream
.
Métodos de InputStream
La InputStream
clase proporciona diferentes métodos que son implementados por sus subclases. Estos son algunos de los métodos más utilizados:
read()
- lee un byte de datos del flujo de entradaread(byte() array)
- lee bytes de la secuencia y los almacena en la matriz especificadaavailable()
- devuelve el número de bytes disponibles en el flujo de entradamark()
- marca la posición en el flujo de entrada hasta la cual se han leído los datosreset()
- devuelve el control al punto de la secuencia donde se estableció la marcamarkSupported()
- comprueba si el métodomark()
yreset()
es compatible con la secuenciaskips()
- omite y descarta el número especificado de bytes del flujo de entradaclose()
- cierra el flujo de entrada
Ejemplo: InputStream con FileInputStream
Así es como podemos implementar InputStream
usando la FileInputStream
clase.
Supongamos que tenemos un archivo llamado input.txt con el siguiente contenido.
This is a line of text inside the file.
Intentemos leer este archivo usando FileInputStream
(una subclase de InputStream
).
import java.io.FileInputStream; import java.io.InputStream; public class Main ( public static void main(String args()) ( byte() array = new byte(100); try ( InputStream input = new FileInputStream("input.txt"); System.out.println("Available bytes in the file: " + input.available()); // Read byte from the input stream input.read(array); System.out.println("Data read from the file: "); // Convert byte array into string String data = new String(array); System.out.println(data); // Close the input stream input.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) )
Salida
Available bytes in the file: 35 Data read from the file: This is a line of text inside the file
En el ejemplo anterior, hemos creado un flujo de entrada usando la FileInputStream
clase. El flujo de entrada está vinculado con el archivo input.txt .
InputStream input = new FileInputStream("input.txt");
Para leer datos del archivo input.txt , hemos implementado estos dos métodos.
input.read(array); // to read data from the input stream input.close(); // to close the input stream
Para obtener más información, visite Java InputStream (documentación oficial de Java).