Java : FilterInputStream con ejemplos

FilterInputStream (Java SE 21 & JDK 21) en Java con ejemplos.
Encontrará ejemplos de código en la mayoría de los métodos de FilterInputStream.

Nota :


Summary

Un FilterInputStream envuelve otro flujo de entrada, que utiliza como su fuente básica de datos, posiblemente transformando los datos en el camino o proporcionando funcionalidad adicional. (Traducción automática)

Class diagram

class MyInputStream extends FilterInputStream {
    MyInputStream(InputStream in) {
        super(in);
    }
}

final byte[] buf = {10, 20, 30};

try (final var is = new MyInputStream(new ByteArrayInputStream(buf))) {
    System.out.println(is.read()); // 10
    System.out.println(is.read()); // 20
    System.out.println(is.read()); // 30
    System.out.println(is.read()); // -1
}

Fields

protected InputStream in

El flujo de entrada que se va a filtrar. (Traducción automática)

class MyInputStream extends FilterInputStream {
    MyInputStream(InputStream in) {
        super(in);
    }

    InputStream getIn() {
        return in;
    }
}

final var byteArrayInputStream = new ByteArrayInputStream(new byte[0]);

try (final var is = new MyInputStream(byteArrayInputStream)) {
    System.out.println(is.getIn() == byteArrayInputStream); // true
}

Constructors

FilterInputStream (InputStream in)

Crea un FilterInputStream asignando el argumento al campo this.in para recordarlo para su uso posterior. (Traducción automática)

class MyInputStream extends FilterInputStream {
    MyInputStream(InputStream in) {
        super(in);
    }
}

final byte[] buf = {10, 20, 30};
try (final var is = new MyInputStream(new ByteArrayInputStream(buf))) {
    System.out.println(is.read()); // 10
    System.out.println(is.read()); // 20
    System.out.println(is.read()); // 30
    System.out.println(is.read()); // -1
}

Methods

int available ()

Devuelve una estimación de la cantidad de bytes que se pueden leer (o omitir) de este flujo de entrada sin que el siguiente llamador de un método para este flujo de entrada los bloquee. (Traducción automática)

class MyInputStream extends FilterInputStream {
    MyInputStream(InputStream in) {
        super(in);
    }
}

final byte[] buf = {10, 20, 30};
try (final var is = new MyInputStream(new ByteArrayInputStream(buf))) {
    System.out.println(is.available()); // 3
    System.out.println(is.read()); // 10

    System.out.println(is.available()); // 2
    System.out.println(is.read()); // 20

    System.out.println(is.available()); // 1
    System.out.println(is.read()); // 30

    System.out.println(is.available()); // 0
    System.out.println(is.read()); // -1
}

void close ()

Cierra este flujo de entrada y libera cualquier recurso del sistema asociado con el flujo. (Traducción automática)

final byte[] buf = {10, 20, 30};
try (final FilterInputStream is = new BufferedInputStream(
        new ByteArrayInputStream(buf))) {
    final var ret = is.readAllBytes();
    System.out.println(Arrays.toString(ret)); // [10, 20, 30]
}
// An example without a try-with-resources statement.
final byte[] buf = {10, 20, 30};
final FilterInputStream is = new BufferedInputStream(new ByteArrayInputStream(buf));
try {
    final var ret = is.readAllBytes();
    System.out.println(Arrays.toString(ret)); // [10, 20, 30]
} finally {
    is.close();
}

void mark (int readlimit)

Marca la posición actual en este flujo de entrada. (Traducción automática)

final byte[] buf = {10, 20, 30, 40, 50};

try (final FilterInputStream is = new BufferedInputStream(
        new ByteArrayInputStream(buf))) {
    System.out.println(is.read()); // 10
    System.out.println(is.read()); // 20

    is.mark(4);

    System.out.println(is.read()); // 30
    System.out.println(is.read()); // 40
    System.out.println(is.read()); // 50
    System.out.println(is.read()); // -1

    is.reset();

    System.out.println(is.read()); // 30
    System.out.println(is.read()); // 40
    System.out.println(is.read()); // 50
    System.out.println(is.read()); // -1
}

boolean markSupported ()

Comprueba si este flujo de entrada admite los métodos de marcar y restablecer. (Traducción automática)

class MyInputStream extends FilterInputStream {
    MyInputStream(InputStream in) {
        super(in);
    }
}

final byte[] buf = {10, 20, 30};

try (final var is = new MyInputStream(new ByteArrayInputStream(buf))) {
    System.out.println(is.markSupported()); // true
}

int read ()

Lee el siguiente byte de datos del flujo de entrada. (Traducción automática)

class MyInputStream extends FilterInputStream {
    MyInputStream(InputStream in) {
        super(in);
    }
}

final byte[] buf = {10, 20, 30};
try (final var is = new MyInputStream(new ByteArrayInputStream(buf))) {
    System.out.println(is.read()); // 10
    System.out.println(is.read()); // 20
    System.out.println(is.read()); // 30
    System.out.println(is.read()); // -1
}

int read (byte[] b)

Lee hasta b.length bytes de datos de este flujo de entrada en una matriz de bytes. (Traducción automática)

class MyInputStream extends FilterInputStream {
    MyInputStream(InputStream in) {
        super(in);
    }
}

final byte[] bytes = {10, 20, 30, 40, 50};
try (final var is = new MyInputStream(new ByteArrayInputStream(bytes))) {
    final var b1 = new byte[3];

    System.out.println(is.read(b1)); // 3
    System.out.println(Arrays.toString(b1)); // [10, 20, 30]

    final var b2 = new byte[3];

    System.out.println(is.read(b2)); // 2
    System.out.println(Arrays.toString(b2)); // [40, 50, 0]

    final var b3 = new byte[3];

    System.out.println(is.read(b3)); // -1
    System.out.println(Arrays.toString(b3)); // [0, 0, 0]
}

int read (byte[] b, int off, int len)

Lee hasta len bytes de datos de este flujo de entrada en una matriz de bytes. (Traducción automática)

class MyInputStream extends FilterInputStream {
    MyInputStream(InputStream in) {
        super(in);
    }
}

final byte[] buf = {10, 20, 30};

try (final var is = new MyInputStream(new ByteArrayInputStream(buf))) {
    final var b1 = new byte[3];

    System.out.println(is.read(b1, 0, 1)); // 1
    System.out.println(Arrays.toString(b1)); // [10, 0, 0]

    final var b2 = new byte[3];

    System.out.println(is.read(b2, 0, 2)); // 2
    System.out.println(Arrays.toString(b2)); // [20, 30, 0]

    final var b3 = new byte[3];

    System.out.println(is.read(b3, 0, 3)); // -1
    System.out.println(Arrays.toString(b3)); // [0, 0, 0]
}

try (final var is = new MyInputStream(new ByteArrayInputStream(buf))) {
    final var b1 = new byte[3];

    System.out.println(is.read(b1, 2, 1)); // 1
    System.out.println(Arrays.toString(b1)); // [0, 0, 10]

    final var b2 = new byte[3];

    System.out.println(is.read(b2, 1, 2)); // 2
    System.out.println(Arrays.toString(b2)); // [0, 20, 30]

    final var b3 = new byte[3];

    System.out.println(is.read(b3, 0, 3)); // -1
    System.out.println(Arrays.toString(b3)); // [0, 0, 0]
}

void reset ()

Reposiciona este flujo a la posición en el momento en que se llamó por última vez al método de marca en este flujo de entrada. (Traducción automática)

final byte[] buf = {10, 20, 30, 40, 50};

try (final FilterInputStream is = new BufferedInputStream(
        new ByteArrayInputStream(buf))) {
    System.out.println(is.read()); // 10
    System.out.println(is.read()); // 20

    is.mark(4);

    System.out.println(is.read()); // 30
    System.out.println(is.read()); // 40
    System.out.println(is.read()); // 50
    System.out.println(is.read()); // -1

    is.reset();

    System.out.println(is.read()); // 30
    System.out.println(is.read()); // 40
    System.out.println(is.read()); // 50
    System.out.println(is.read()); // -1
}

long skip (long n)

Omite y descarta n bytes de datos del flujo de entrada. (Traducción automática)

class MyInputStream extends FilterInputStream {
    MyInputStream(InputStream in) {
        super(in);
    }
}

final byte[] buf = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100};

try (final var is = new MyInputStream(new ByteArrayInputStream(buf))) {
    System.out.println(is.read()); // 10

    System.out.println(is.skip(1)); // 1
    System.out.println(is.read()); // 30

    System.out.println(is.skip(2)); // 2
    System.out.println(is.read()); // 60

    System.out.println(is.skip(3)); // 3
    System.out.println(is.read()); // 100

    System.out.println(is.skip(1)); // 0
    System.out.println(is.read()); // -1
}

Methods declared in InputStream

nullInputStream, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo

Consulte el siguiente enlace.


Related posts

To top of page