Java ByteArrayOutputStream: Methodes, gebruik en praktische voorbeelden
Java ByteArrayOutputStream onder de knie
Deze tutorial verkent Java's ByteArrayOutputStream, de kernmethoden en praktische voorbeelden om je te helpen byte-level output efficiënt te schrijven.
De ByteArrayOutputStream-klasse in het java.io-pakket stelt je in staat om data in een interne byte-array te schrijven die automatisch groeit zoals nodig. Het breidt de abstracte OutputStream-klasse uit, wat het een veelzijdig hulpmiddel maakt voor in-memory byte-manipulatie.
Let op: De klasse onderhoudt een interne buffer die op aanvraag uitbreidt, dus je hoeft meestal de capaciteit niet vooraf te definiëren tenzij je de exacte benodigde grootte kent.
Een ByteArrayOutputStream aanmaken
Om een ByteArrayOutputStream aan te maken, importeer java.io.ByteArrayOutputStream en instantieer het. Standaard begint de buffer op 32 bytes:
// Standaard grootte
ByteArrayOutputStream out = new ByteArrayOutputStream();
Je kunt ook een initiële capaciteit opgeven als je een grote payload verwacht:
// Aangepaste grootte
ByteArrayOutputStream out = new ByteArrayOutputStream(int grootte);
De grootte-parameter stelt de initiële bufferlengte in bytes in.
Kernmethoden van ByteArrayOutputStream
Als OutputStream-implementatie biedt ByteArrayOutputStream verschillende essentiële methoden:
write()-methode
write(int b)– schrijft een enkele byte naar de streamwrite(byte[] b)– schrijft een volledige byte-arraywrite(byte[] b, int off, int len)– schrijftlenbytes uit de array beginnend bij indexoffwriteTo(ByteArrayOutputStream out1)– kopieert de huidige buffer naar een andereByteArrayOutputStream
Voorbeeld: Data schrijven naar ByteArrayOutputStream
import java.io.ByteArrayOutputStream;
class Main {
public static void main(String[] args) {
String data = "Dit is een regel tekst in de string.";
try {
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] array = data.getBytes();
out.write(array);
String streamData = out.toString();
System.out.println("Output stream: " + streamData);
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Output
Output stream: Dit is een regel tekst in de string.
In dit voorbeeld zet write() de byte-array in de stream, en haalt toString() de geaccumuleerde data op als tekst.
Data benaderen vanuit ByteArrayOutputStream
toByteArray()– retourneert een kopie van de interne byte-arraytoString()– converteert de buffer naar eenStringmet het platformstandaard-charset
Hieronder demonstreert beide methoden:
import java.io.ByteArrayOutputStream;
class Main {
public static void main(String[] args) {
String data = "Dit is data.";
try {
ByteArrayOutputStream out = new ByteArrayOutputStream();
out.write(data.getBytes());
byte[] byteData = out.toByteArray();
System.out.print("Data met toByteArray(): ");
for (int i = 0; i < byteData.length; i++) {
System.out.print((char) byteData[i]);
}
String stringData = out.toString();
System.out.println("\nData met toString(): " + stringData);
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Output
Data met toByteArray(): Dit is data. Data met toString(): Dit is data.
Hier casten we elke byte naar een karakter voor weergave, wat illustreert hoe de onderliggende array naar tekst afbeeldt.
close()-methode
Het aanroepen van close() op een ByteArrayOutputStream heeft geen nadelig effect; de stream blijft bruikbaar. Dit gedrag sluit aan bij het ontwerp voor in-memory buffers waar geen externe bronnen vrijgegeven hoeven te worden.
Extra methoden
| Methode | Beschrijving |
|---|---|
size() | Retourneert het aantal bytes dat tot nu toe geschreven is |
flush() | Reset de interne buffer, effectief de stream leegmakend |
Voor geavanceerd gebruik, raadpleeg de officiële Java SE-documentatie: Java ByteArrayOutputStream (officiële documentatie).
Java
- Java's final-sleutelwoord begrijpen: variabelen, methoden en klassen
- Java instanceof operator: een uitgebreide gids
- Java-erfenis meesteren: concepten, typen en praktische voorbeelden
- Java geneste static classes begrijpen: gebruik, verschillen en voorbeelden
- Java anonieme inner classes meesteren: definitie, syntax en praktische voorbeelden
- Java Singleton patroon uitgelegd: hoe veilig te implementeren en gebruiken
- Java Reflectie meesteren: klassen, methoden en velden inspecteren tijdens runtime
- Java ArrayList meesteren: operaties, methoden en best practices
- Java ObjectOutputStream: Serialisatie, methoden en praktische voorbeelden
- Java Generics: Herbruikbare, type-veilige code bouwen
- Java-bestandsbewerkingen onder de knie krijgen met java.io – Aanmaken, lezen, schrijven en verwijderen