Newer
Older
gitbucket_jkp / src / main / scala / util / CompressUtil.scala
package util

import java.io.File
import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry
import org.apache.commons.io.FileUtils
import org.apache.commons.io.IOUtils

object CompressUtil {

  def zip(dest: File, dir: File): Unit = {
    def addDirectoryToZip(out: ZipArchiveOutputStream, dir: File, path: String): Unit = {
      dir.listFiles.map { file =>
        if(file.isFile){
          out.putArchiveEntry(new ZipArchiveEntry(path + "/" + file.getName))
          out.write(FileUtils.readFileToByteArray(file))
          out.closeArchiveEntry
        } else if(file.isDirectory){
          addDirectoryToZip(out, file, path + "/" + file.getName)
        }
      }
    }
      
    val out = new ZipArchiveOutputStream(dest)
    try {
      addDirectoryToZip(out, dir, dir.getName)
    } finally {
      IOUtils.closeQuietly(out)
    }
  }

}