[kotlin] 코틀린과 자바 파일 압축 및 압축 해제

코틀린과 자바는 둘 다 매우 강력하고 유용한 프로그래밍 언어입니다. 파일을 압축하고 압축을 해제해야 하는 경우가 많은데, 이러한 작업을 어떻게 처리할 수 있는지 알아봅시다. 이번 포스트에서는 코틀린과 자바에서 파일을 압축하고 해제하는 방법을 다룰 것입니다.

1. 코틀린에서 파일 압축하기

코틀린에서 파일을 압축하기 위해 ZipOutputStream 클래스를 사용합니다. 아래는 간단한 예제 코드입니다.

import java.io.File
import java.io.FileInputStream
import java.io.FileOutputStream
import java.util.zip.ZipEntry
import java.util.zip.ZipOutputStream

fun zipFiles(files: List<File>, zipFile: File) {
    val buffer = ByteArray(1024)

    ZipOutputStream(FileOutputStream(zipFile)).use { zipOut ->
        for (file in files) {
            FileInputStream(file).use { fileInput ->
                val entry = ZipEntry(file.name)
                zipOut.putNextEntry(entry)
                var len: Int
                while (fileInput.read(buffer).also { len = it } > 0) {
                    zipOut.write(buffer, 0, len)
                }
            }
        }
    }
}

fun main() {
    val files = listOf(File("file1.txt"), File("file2.txt"))
    zipFiles(files, File("files.zip"))
}

2. 코틀린에서 파일 압축 해제하기

코틀린에서 파일을 압축 해제하기 위해 ZipInputStream 클래스를 사용합니다. 아래는 간단한 예제 코드입니다.

import java.io.File
import java.io.FileInputStream
import java.io.FileOutputStream
import java.util.zip.ZipInputStream

fun unzipFile(zipFile: File, destDir: File) {
    val buffer = ByteArray(1024)
    val zipIn = ZipInputStream(FileInputStream(zipFile))

    var entry = zipIn.nextEntry
    while (entry != null) {
        val newFile = File(destDir, entry.name)
        FileOutputStream(newFile).use { fileOut ->
            var len: Int
            while (zipIn.read(buffer).also { len = it } > 0) {
                fileOut.write(buffer, 0, len)
            }
        }
        entry = zipIn.nextEntry
    }
    zipIn.closeEntry()
    zipIn.close()
}

fun main() {
    unzipFile(File("files.zip"), File("unzippedFiles"))
}

이제 코틀린으로 파일을 압축하고 압축을 해제하는 방법을 알게 되었습니다.

위의 코드는 간단한 예제이며, 실제 환경에서는 예외 처리와 같은 추가적인 처리가 필요할 수 있습니다.

참고문헌: