Create file ZIP in Kotlin

后端 未结 4 1168
别跟我提以往
别跟我提以往 2020-12-31 05:28

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         


        
4条回答
  •  心在旅途
    2020-12-31 06:06

    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)
                }
            }
    
        }
    
    }
    

提交回复
热议问题