Creare file ZIP in Kotlin

Mattepuffo's logo
Creare file ZIP in Kotlin

Creare file ZIP in Kotlin

Continuando nel mio studio di Kotlin, mi sono imbattutto nella creazione di file ZIP con più files contemporaneamente.

Quindi, per fare un esempio basico, partendo da un array di file, vediamo come inserirli in un file ZIP.

Questo un esempio di codice (potete vedere la mia domanda su Stack Overflow):

import java.io.BufferedInputStream
import java.io.BufferedOutputStream
import java.io.FileInputStream
import java.io.FileOutputStream
import java.util.zip.ZipEntry
import java.util.zip.ZipOutputStream

fun main(args: Array) {
    val files: Array = arrayOf(
            "/home/matte/theres_no_place.png",
            "/home/matte/vladstudio_the_moon_and_the_ocean_1920x1440_signed.jpg"
    )
    ZipOutputStream(
            BufferedOutputStream(
                    FileOutputStream("/home/matte/Desktop/test.zip"))).use { out ->
        for (file in files) {
            FileInputStream(file).use { fi ->
                BufferedInputStream(fi).use { origin ->
                    val entry = ZipEntry(file.substring(file.lastIndexOf("/")))
                    out.putNextEntry(entry)
                    origin.copyTo(out, 1024)
                }
            }
        }
    }
}

Non abbiamo usato librerie esterna, ma le API standard di Java.

Inoltre, io sto facendo i test su Linux; se usate Windows probabilmente dovete modificare una riga:

val entry = ZipEntry(file)

Per il resto, dovrebbe essere abbastanza ok (anche a livello di sintassi Kotlin-like).

Enjoy!


Condividi

Commentami!