Java.io.SequenceInputStream en Java

La clase SequenceInputStream le permite concatenar múltiples InputStreams. Lee los datos de los flujos uno por uno. Comienza con una colección ordenada de flujos de entrada y lee desde el primero hasta que se alcanza el final del archivo, luego lee desde el segundo, y así sucesivamente, hasta que se alcanza el final del archivo en el último de los flujos de entrada contenidos.

Constructor y Descripción

  • SequenceInputStream(Enumeration e) : Inicializa un SequenceInputStream recién creado, que debe ser una Enumeración que produce objetos cuyo tipo es InputStream.
  • SequenceInputStream(InputStream s1, InputStream s2) : Inicializa un SequenceInputStream recién creado al recordar los dos argumentos, que se leerán en orden, primero s1 y luego s2.

Métodos importantes:

  • read: lee el siguiente byte de datos de este flujo de entrada.
    Syntax:
    public int read()
             throws IOException 
    Returns: the next byte of data, or -1 if the end of the stream is reached.
    Throws: IOException - if an I/O error occurs.
    
  • read(byte[] b, int off, int len) : Lee hasta len bytes de datos de este flujo de entrada en una array de
    Syntax:
    public int read(byte[] b,
           int off,
           int len)
             throws IOException
    Overrides: read in class InputStream
    Parameters:
    b - the buffer into which the data is read.
    off - the start offset in array b at which the data is written.
    len - the maximum number of bytes read.
    Returns: int the number of bytes read.
    Throws:
    NullPointerException - If b is null.
    IndexOutOfBoundsException - If off is negative, len is negative, 
    or len is greater than b.length - off
    IOException - if an I/O error occurs.
  • disponible : devuelve una estimación del número de bytes que se pueden leer (u omitir) del flujo de entrada subyacente actual sin bloquearse por la siguiente invocación de un método para el flujo de entrada subyacente actual.
    Syntax :
    public int available()
                  throws IOException 
    Overrides: available in class InputStream
    Returns:an estimate of the number of bytes that can be read (or skipped over) 
    from the current underlying input stream without blocking or 0 if this input stream
    has been closed by invoking its close() method
    Throws:
    IOException - if an I/O error occurs.
  • cerrar: Cierra este flujo de entrada y libera cualquier recurso del sistema asociado con el flujo.
    Syntax :
    public void close()
               throws IOException
    Overrides: close in class InputStream
    Throws:
    IOException - if an I/O error occurs.

El siguiente es un ejemplo de la clase SequenceInputStream que implementa algunos de los métodos importantes.
Programa:

//Java program to demonstrate SequenceInputStream
import java.io.*;
import java.util.*;
  
class SequenceISDemp
{
    public static void main(String args[])throws IOException
    {
  
        //creating the FileInputStream objects for all the following files
        FileInputStream fin=new FileInputStream("file1.txt");
        FileInputStream fin2=new FileInputStream("file2.txt");
        FileInputStream fin3=new FileInputStream("file3.txt");
  
        //adding fileinputstream obj to a vector object
        Vector v = new Vector();
          
        v.add(fin);
        v.add(fin2);
        v.add(fin3);
          
        //creating enumeration object by calling the elements method
        Enumeration enumeration = v.elements();
  
        //passing the enumeration object in the constructor
        SequenceInputStream sin = new SequenceInputStream(enumeration);
          
        // determine how many bytes are available in the first stream
        System.out.println("" + sin.available());
          
        // Estimating the number of bytes that can be read 
        // from the current underlying input stream 
        System.out.println( sin.available());
          
        int i = 0;
        while((i = sin.read())! = -1)
        {
            System.out.print((char)i);
        }
        sin.close();
        fin.close();
        fin2.close();
        fin3.close();
    }
}

Producción:

19
This is first file This is second file This is third file

Nota: este programa no se ejecutará en IDE en línea ya que no hay archivos asociados con él.

Este artículo es una contribución de Nishant Sharma . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *