I\'m trying to create a zip file in Kotlin. this is the code:
fun main(args: Array) {
var files: Array = arrayOf(\"/home/matte/th
Here is a solution working with subfolders:
fun addFolderToZip(
folder: String,
destination: String,
zipFileName: String = folder.substring(folder.lastIndexOf("/"))
) {
val folderToZip = File(folder)
var out: ZipOutputStream? = null
try {
out = ZipOutputStream(
BufferedOutputStream(FileOutputStream("$destination/$zipFileName"))
)
recursivelyAddZipEntries(folderToZip, folderToZip.absolutePath, out)
} catch (e: Exception) {
Log.e("ZIP Err", e.message)
} finally {
out?.close()
}
}
private fun recursivelyAddZipEntries(
folder: File,
basePath: String,
out: ZipOutputStream
) {
val files = folder.listFiles() ?: return
for (file in files) {
if (file.isDirectory) {
recursivelyAddZipEntries(file, basePath, out)
} else {
val origin = BufferedInputStream(FileInputStream(file))
origin.use {
val entryName = file.path.substring(basePath.length)
out.putNextEntry(ZipEntry(entryName))
origin.copyTo(out, 1024)
}
}
}
}