java.util.zip – Compressing/Decompressing a Byte Array

Ecco un esempio di utilizzo di java.util.zip per la compressione di un array di byte.

byte[] input = "some some bytes to compress".getBytes(); // Configuriamo il livello di compressione
Deflater compressor = new Deflater();
compressor.setLevel(Deflater.BEST_COMPRESSION); // Inseriamo i dati da comprimere.
compressor.setInput(input);
compressor.finish(); // Creiamo un array espandibile per contenere i dati compressi.
// Non possiamo utilizzare un array delle stesse dimensioni dei dati in
// input perché non è garantito che la i dati compressi abbiano una
// dimensione inferiore all'originale.
ByteArrayOutputStream bos = new ByteArrayOutputStream(input.length); // Avvio compressione
byte[] buf = new byte[1024];
while (!compressor.finished()) {
int count = compressor.deflate(buf);
bos.write(buf, 0, count);
}
try {
bos.close();
} catch (IOException e) {
} // Prelievo dati compressi
byte[] compressedData = bos.toByteArray(); 

Decompressing a Byte Array

// Inseriamo i dati da decomprimere
Inflater decompressor = new Inflater();
decompressor.setInput(compressedData); // Creiamo un array espandibile per la decompressione dei dati.
ByteArrayOutputStream bos = new ByteArrayOutputStream(compressedData.length); // Avvio decompressione
byte[] buf = new byte[1024];

while (!decompressor.finished()) {
try {
int count = decompressor.inflate(buf);
bos.write(buf, 0, count);
} catch (DataFormatException e) {
}
}
try {
bos.close();
} catch (IOException e) {
} // Prelievo dati decompressi.

byte[] decompressedData = bos.toByteArray();

Fletto i muscoli e sono nel vuoto.

Fonte: The Java Developers Almanac 1.4

powered by IMHO 1.3

Un pensiero su “java.util.zip – Compressing/Decompressing a Byte Array

Rispondi