Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Java

Java ByteArrayInputStream: Praktische gids voor het lezen van byte-arrays

Java ByteArrayInputStream

Dit artikel legt uit hoe je Java's ByteArrayInputStream gebruikt om data uit byte-arrays te lezen, met constructors, kernmethoden en praktische voorbeelden.

Wat is ByteArrayInputStream?

De ByteArrayInputStream-klasse, onderdeel van het java.io-pakket, implementeert InputStream en laat je een byte-array behandelen als een input stream. Intern bewaart het een kopie van de meegeleverde array, wat willekeurige toegang en efficiënt lezen mogelijk maakt.

Let op: De stream leest uit de array zelf, niet van een externe bron, dus alle operaties zijn geheugengebaseerd.

Een ByteArrayInputStream aanmaken

Importeer java.io.ByteArrayInputStream en instantieer het. Je kunt de hele array of een slice lezen.

ByteArrayInputStream input = new ByteArrayInputStream(byte[] arr);
ByteArrayInputStream input = new ByteArrayInputStream(byte[] arr, int start, int lengte);

De tweede constructor leest lengte bytes beginnend bij index start.

Kernmethoden

read()

  • int read() – leest de volgende byte, of -1 als het einde bereikt is
  • int read(byte[] b) – vult de meegeleverde array met data
  • int read(byte[] b, int off, int len) – leest maximaal len bytes in b beginnend bij offset off

Voorbeeld: Bytes lezen

import java.io.ByteArrayInputStream;

public class Main {
    public static void main(String[] args) {
        byte[] array = {1, 2, 3, 4};
        try (ByteArrayInputStream input = new ByteArrayInputStream(array)) {
            System.out.print("Gelezen bytes: ");
            int waarde;
            while ((waarde = input.read()) != -1) {
                System.out.print(waarde + ", ");
            }
            System.out.println();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Output

Gelezen bytes: 1, 2, 3, 4, 

available()

Retourneert het aantal bytes dat nog beschikbaar is zonder te blokkeren.

import java.io.ByteArrayInputStream;

public class Main {
    public static void main(String[] args) {
        byte[] array = {1, 2, 3, 4};
        try (ByteArrayInputStream input = new ByteArrayInputStream(array)) {
            System.out.println("Initieel: " + input.available());
            input.read();
            input.read();
            System.out.println("Na 2 reads: " + input.available());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Output

Initieel: 4
Na 2 reads: 2

skip()

Verplaatst de streampositie met het gevraagde aantal bytes.

import java.io.ByteArrayInputStream;

public class Main {
    public static void main(String[] args) {
        byte[] array = {1, 2, 3, 4};
        try (ByteArrayInputStream input = new ByteArrayInputStream(array)) {
            input.skip(2);
            System.out.print("Na skip: ");
            int waarde;
            while ((waarde = input.read()) != -1) {
                System.out.print(waarde + ", ");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Output

Na skip: 3, 4, 

close()

Het sluiten van een ByteArrayInputStream is een no-op; de stream kan erna nog steeds gebruikt worden. De methode bestaat alleen voor API-compatibiliteit.

Overige nuttige methoden

MethodeBeschrijving
mark(int readlimit)Markeert de huidige positie
reset()Keert terug naar de laatste gemarkeerde positie
markSupported()Retourneert altijd true
finalize()Zorgt dat bronnen vrijgegeven worden (geen effect voor deze klasse)

Voor de volledige API, zie de officiële Java-documentatie.

Java

  1. Java array-kopieertechnieken: een uitgebreide gids
  2. Java's final-sleutelwoord begrijpen: variabelen, methoden en klassen
  3. Java instanceof operator: een uitgebreide gids
  4. Java geneste static classes begrijpen: gebruik, verschillen en voorbeelden
  5. Java anonieme inner classes meesteren: definitie, syntax en praktische voorbeelden
  6. Java Singleton patroon uitgelegd: hoe veilig te implementeren en gebruiken
  7. Java Reflectie meesteren: klassen, methoden en velden inspecteren tijdens runtime
  8. Java ObjectOutputStream: Serialisatie, methoden en praktische voorbeelden
  9. Java Scanner: Uitgebreide gids met praktische voorbeelden
  10. Java Generics: Herbruikbare, type-veilige code bouwen
  11. Java-bestandsbewerkingen onder de knie krijgen met java.io – Aanmaken, lezen, schrijven en verwijderen