API-Referenz: Data
Die Data-Klasse ist ein unveränderlicher Wrapper um einen rohen Speicherpuffer (Byte-Array). Sie wird in Skija verwendet, um binäre Daten (wie kodierte Bilder, Schriftarten oder Shader) effizient zwischen Java und der nativen C++ Skia-Bibliothek auszutauschen.
Erstellung
Aus Java-Byte-Array
Kopiert die Daten aus einem Java-byte[].
byte[] bytes = new byte[] { 1, 2, 3, 4 };
Data data = Data.makeFromBytes(bytes);Aus Datei
Mappt eine Datei effizient in den Speicher (verwendet nach Möglichkeit mmap).
Data data = Data.makeFromFileName("assets/image.png");
if (data == null) {
System.err.println("Datei nicht gefunden");
}Leer
Erstellt ein leeres Data-Objekt.
Data empty = Data.makeEmpty();Modifikation (Teilmengen)
Da Data unveränderlich ist, kann der Inhalt nicht geändert werden, aber es kann eine Ansicht in einen Teilbereich erstellt werden (Zero-Copy, falls unterstützt, oder günstige Kopie).
// Erstellt ein neues Data-Objekt, das die Bytes 10-20 repräsentiert
Data subset = data.makeSubset(10, 10);Auf Inhalte zugreifen
Als Byte-Array
Kopiert die nativen Daten zurück in ein Java-byte[].
byte[] content = data.getBytes();
// Oder einen Bereich
byte[] part = data.getBytes(0, 10);Als ByteBuffer
Wrappet den nativen Speicher direkt in einen Java-ByteBuffer. Dies ist der effizienteste Weg, Daten ohne Kopie zu lesen.
ByteBuffer buffer = data.toByteBuffer();
// Vom Buffer lesen...Größe
long size = data.getSize();Lebenszyklus
Data erweitert Managed und verwendet nativen Speicher. Idealerweise verwenden Sie try-with-resources oder rufen close() auf, wenn Sie fertig sind, obwohl der Garbage Collector es letztendlich freigibt.
try (Data data = Data.makeFromFileName("large_file.dat")) {
// data verwenden...
} // data.close() wird automatisch aufgerufen