Clase Java.io.FilterInputStream en Java

FilterInputStream Class in Java

Filter Streams filtra los datos a medida que leen y escriben datos en el flujo de entrada, los filtran y los pasan a los flujos subyacentes. Los flujos de filtro son

FilterInputStream : la clase Java.io.FilterInputStream funciona casi como la clase InputStream en Java, pero lo que hace es simplemente anular los métodos de la clase InputStream, pasando la solicitud a InputStream. El método read() de FilterInputStream Class filtra los datos, los lee y pasa los datos al filtrado de flujo subyacente que se realiza según los flujos.

Declaración:

public class FilterInputStream
   extends InputStream

Constructores :

  • FilterInputStream protegido (InputStream in): crea un FilterInputStream asignando el argumento in al campo this.in para recordarlo para su uso posterior.

Métodos:

  • read(byte[] buffer) : java.io.FilterInputStream.read(byte[] buffer) lee el número de bytes de buffer.length del flujo de entrada de filtro a la array de búfer.
    Sintaxis:
    public int read(byte[] buffer)
    Parameters :
    buffer : buffer to be read
    Return : 
    reads number of bytes of buffer.length to the buffer 
    else, -1 i.e. when end of file is reached.
    Exception :
    ->  IOException : If I/O error occurs.
  • Implementación:

    // Java program illustrating the working of read(byte[] buffer) method
      
    import java.io.*;
      
    public class NewClass
    {
        public static void main(String[] args) throws IOException
        {
            // LineNumberInputStream & FileInputStream initailly null
            FilterInputStream geek_input = null;
            InputStream geek = null;
      
            try{
                char c;
                int a;
                byte[] buffer = new byte[6];
      
                // New InputStream : 'GEEKS' is created
                geek = new FileInputStream("GEEKS.txt");
                geek_input = new BufferedInputStream(geek);
      
                a = geek.read(buffer);
                // read() method returning Bytes of Input Stream as integer
                // '-1' indicating to read till end Of Input Stream
                int length = 1 ;
                  
                for(byte g : buffer)
                {
                    // Since read() method returns Integer value
                    // So, we convert each integer value to char
                    c = (char)g;
      
                    System.out.println("At position " + length  +  " : "  + c);
                    length++;
                }
            }
            catch(Exception e)
            {
                // In case of error
                e.printStackTrace();
                System.out.println("ERROR Occurs ");
            }
            finally
            {
                // Closing the streams, Once the End of Input Stream is reached
                if(geek != null)
                    geek.close();
      
                if(geek_input != null)
                    geek_input.close();
            }
        }
    }

    Nota:
    el siguiente código Java no se ejecutará aquí ya que no podemos acceder a ningún archivo en el IDE en línea.
    Entonces, copie el programa a su sistema y ejecútelo allí.

    El archivo GEEKS.txt utilizado en el programa contiene:

HelloGeeks

En el código dado buffer.length = 6, por lo que solo HelloG se leerá mediante el método de lectura (byte [] buffer)
Salida:

At position 1 : H
At position 2 : e
At position 3 : l
At position 4 : l
At position 5 : o
At position 6 : G
  • read(byte[] buffer, int offset, int maxlen) : java.io.FilterInputStream.read(byte[] buffer, int offset, int maxlen) lee hasta maxlen de datos de FilterInputStream en un búfer.
    Sintaxis:
    public int read(byte[] buffer, int offset, int maxlen)
    Parameters :
    buffer : Destination buffer
    offset : start position to read
    maxlen : max. length of bytes to be read
    Return : 
    total no. of bytes to be written else, -1 i.e. when end of Stream is reached.
    Exception :
    ->  IOException : If I/O error occurs.
  • Implementación:

    // Java program illustrating the working of
    // read(byte[] buffer, int offset, int maxlen) method
      
    import java.io.*;
      
    public class NewClass
    {
        public static void main(String[] args) throws IOException
        {
            // LineNumberInputStream & FileInputStream initailly null
            FilterInputStream geek_input = null;
            InputStream geek = null;
      
            try{
                char c;
                int a;
                byte[] buffer = new byte[4];
      
                // New InputStream : 'ABC' is created
                geek = new FileInputStream("ABC.txt");
                geek_input = new BufferedInputStream(geek);
      
                // Offset = 1(*), Maxlen = 3 (MOH)
                a = geek.read(buffer, 1, 3);
                // read() method returning Bytes of Input Stream as integer
                // '-1' indicating to read till end Of Input Stream
                 
                for(byte g : buffer)
                {
                    // Since read() method returns Integer value
                    // So, we convert each integer value to char
                    c = (char)g;
      
                    if(g == 0)
                        c = '*';
      
                    System.out.print(c);
                }
            }
            catch(Exception e)
            {
                // In case of error
                e.printStackTrace();
                System.out.println("ERROR Occurs ");
            }
            finally
            {
                // Closing the streams, Once the End of Input Stream is reached
                if(geek != null)
                    geek.close();
      
                if(geek_input != null)
                    geek_input.close();
            }
        }
    }
    

    Nota:
    el siguiente código Java no se ejecutará aquí ya que no podemos acceder a ningún archivo en el IDE en línea.
    Entonces, copie el programa a su sistema y ejecútelo allí.

    El archivo ABC.txt utilizado en el programa contiene:

    MOHIT

    Compensación = 1, es decir, * y Maxlen = 3, es decir, MOH
    Salida:

    *MOH
  • disponible() : java.io.FilterInputStream.disponible() devuelve el no. de bytes que se pueden leer desde el flujo de entrada.
    Sintaxis:
    public int available()
    Parameters : 
    -------
    Return : 
    returns the no. of bytes that an be read from the FilterInputStream.
    Exception: 
    IOException : in case I/O error occurs
  • Implementación:

    // Java program illustrating the working of available() method
      
    import java.io.*;
    public class NewClass
    {
        public static void main(String[] args) throws IOException
        {
            // FilterInputStream & FileInputStream initailly null
            FilterInputStream geek_input = null;
      
            InputStream geek = null;
      
            try{
                char c;
                int a, b;
      
                // New InputStream : 'ABC' is created
                geek = new FileInputStream("ABC.txt");
                geek_input = new BufferedInputStream(geek);
      
                while((a = geek_input.read()) != -1)
                {
                    // So, we convert each integer value to char
                    c = (char)a;
      
                    // Use of available method : return no. of bytes that can be read
                    a = geek_input.available();
                    System.out.println(c + " Bytes available : " + a);
      
                }
            }
            catch(Exception e)
            {
                // In case of error
                e.printStackTrace();
                System.out.println("ERROR Occurs ");
            }
            finally
            {
                // Closing the streams, Once the End of FilterInputStream is reached
                if(geek != null)
                    geek.close();
      
                if(geek_input != null)
                    geek_input.close();
            }
        }
    }
    

    Nota:
    el siguiente código Java no se ejecutará aquí ya que no podemos acceder a ningún archivo en el IDE en línea.
    Entonces, copie el programa a su sistema y ejecútelo allí.

    El archivo ABC.txt utilizado en el programa contiene:

    MOHIT

    Producción :

    M Bytes available : 4
    O Bytes available : 3
    H Bytes available : 2
    I Bytes available : 1
    T Bytes available : 0
  • read() : java.io.FilterInputStream.read() lee el siguiente byte de datos del Filter Input Stream. El byte de valor se devuelve en el rango de 0 a 255. Si no hay ningún byte disponible porque se ha llegado al final de la secuencia, se devuelve el valor -1.
    Sintaxis:
    public int read()
    Parameters :
    ------
    Return : 
    Reads next data else, -1 i.e. when end of Stream is reached.
    Exception :
    ->  IOException : If I/O error occurs.
  • close() : java.io.FilterInputStream.close() cierra el flujo de entrada de filtro y libera los recursos del sistema asociados con este flujo a Garbage Collector.
    Sintaxis:
    public void close()
    Parameters :
    ------
    Return : 
    void
    Exception :
    ->  IOException : If I/O error occurs.
  • mark(int arg) : java.io.FilterInputStream.mark(int arg) marca la posición actual de FilterInputStream. Establece el límite de lectura, es decir, el número máximo de bytes que se pueden leer antes de que la posición de la marca se vuelva inválida.
    Sintaxis:
    public void mark(int arg)
    Parameters :
    arg : integer specifying the read limit of the input Stream
    Return : 
    void
  • skip() : java.io.FilterInputStream.skip(long arg) salta y descarta los bytes ‘arg’ de los datos de FilterInputStream.
    Sintaxis:
    public long skip(long arg)
    Parameters : 
    arg : no. of bytes of FilterInputStream data to skip.
    Return : 
    no. of bytes to be skipped
    Exception: 
    IOException : in case I/O error occurs
  • reset() : java.io.FilterInputStream.reset() es invocado por el método mark(). Reposiciona el FilterInputStream a la posición marcada.
    Sintaxis:
    public void reset()
    Parameters :
    ----
    Return : 
    void
    Exception :
    ->  IOException : If I/O error occurs.
  • markSupported() : el método java.io.FilterInputStream.markSupported() comprueba si este flujo de entrada es compatible con los métodos de marcar y restablecer. El método markSupported de InputStream devuelve falso de forma predeterminada.
    Sintaxis:
    public boolean markSupported()
    Parameters :
    -------
    Return : 
    true if input stream supports the mark() and reset() method  else,false
  • Explicación del programa Java: métodos markSupported(), close(), reset(), mark(), read(), skip()

    // Java program illustrating the working of FilterInputStream method
    // mark(), read(), skip()
    // markSupported(), close(), reset()
      
    import java.io.*;
      
    public class NewClass
    {
        public static void main(String[] args) throws Exception
        {
            InputStream geek = null;
            // FilterInputStream initialised to null here
            FilterInputStream geek_input = null;
            try {
      
                geek = new FileInputStream("GEEKS.txt");
                  
            geek_input = new BufferedInputStream(geek);
      
                // read() method : reading and printing Characters
                // one by one
                System.out.println("Char : " + (char)geek_input.read());
                System.out.println("Char : " + (char)geek_input.read());
                System.out.println("Char : " + (char)geek_input.read());
      
                // mark() : read limiing the 'geek' input stream
                geek_input.mark(0);
      
                // skip() : it results in redaing of 'e' in G'e'eeks
                geek_input.skip(1);
                System.out.println("skip() method comes to play");
                System.out.println("mark() method comes to play");
                System.out.println("Char : " + (char)geek_input.read());
                System.out.println("Char : " + (char)geek_input.read());
                System.out.println("Char : " + (char)geek_input.read());
      
                boolean check = geek_input.markSupported();
                if (geek_input.markSupported())
                {
                    // reset() method : repositioning the stream to
                    // marked positions.
                    geek_input.reset();
                    System.out.println("reset() invoked");
                    System.out.println("Char : " + (char)geek_input.read());
                    System.out.println("Char : " + (char)geek_input.read());
                }
                else
                    System.out.println("reset() method not supported.");
                    System.out.println("geek_input.markSupported() supported" 
                                                    + " reset() : " + check);
      
            }
            catch(Exception excpt)
            {
                // in case of I/O error
                excpt.printStackTrace();
            }
            finally
            {
                // releasing the resources back to the
                // GarbageCollector when closes
                if (geek != null)
                { // Use of close() : closing the file
                    // and releasing resources
                    geek.close();
                }
      
                if(geek_input != null)
                    geek_input.close();
            }
        }
    }
    

    Nota:
    este código no se ejecutará en el IDE en línea ya que dicho archivo no está presente aquí.
    Puede ejecutar este código en su sistema para verificar el funcionamiento.
    El archivo GEEKS.txt utilizado en el código tiene

    HelloGeeks

    Producción :

    Char : H
    Char : e
    Char : l
    skip() method comes to play
    mark() method comes to play
    Char : o
    Char : G
    Char : e
    reset() invoked
    Char : l
    Char : o
    geek_input.markSupported() supported reset() : true

    Este artículo es aportado por Mohit Gupta 🙂 . 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 *