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

파일 압축 및 해제는 많은 애플리케이션에서 필요한 기능 중 하나입니다. 코틀린 및 자바에서는 java.util.zip 패키지를 사용하여 파일을 압축하고 해제할 수 있습니다.

파일 압축

파일을 압축하기 위해서는 다음과 같은 단계를 따릅니다.

  1. ZipOutputStream을 사용하여 압축 할 대상 파일에 대한 출력 스트림을 생성합니다.
  2. 압축할 파일을 읽어 들인 후 ZipEntry를 생성하여 압축 파일에 추가합니다.
import java.util.zip.ZipEntry
import java.util.zip.ZipOutputStream
import java.io.File
import java.io.FileInputStream
import java.io.FileOutputStream
import java.io.IOException

fun zipFile(inputFilePath: String, outputFilePath: String) {
    val fileName = File(inputFilePath).name
    val zipFileName = outputFilePath + File.separator + "$fileName.zip"
    val file = File(inputFilePath)
    val fis = FileInputStream(file)
    val zos = ZipOutputStream(FileOutputStream(zipFileName))

    val entry = ZipEntry(file.name)
    zos.putNextEntry(entry)
    val buffer = ByteArray(1024)
    var length: Int
    while (fis.read(buffer).also { length = it } >= 0) {
        zos.write(buffer, 0, length)
    }
    zos.closeEntry()
    fis.close()
    zos.close()
}

위의 코드는 java.util.zip 패키지를 사용하여 파일을 압축하는 간단한 예제입니다.

파일 해제

해제할 압축 파일을 입력으로 받아서 해당 압축 파일의 내용을 해제하는 단계는 다음과 같습니다.

  1. ZipInputStream 을 사용하여 압축 파일을 입력으로 받습니다.
  2. 압축 파일의 내용을 해제합니다.
import java.util.zip.ZipEntry
import java.util.zip.ZipInputStream
import java.io.File
import java.io.FileInputStream
import java.io.FileOutputStream
import java.io.IOException

fun unzipFile(zipFilePath: String, outputDirectory: String) {
    val buffer = ByteArray(1024)

    val zis = ZipInputStream(FileInputStream(zipFilePath))
    var zipEntry = zis.nextEntry

    while (zipEntry != null) {
        val newFile = File(outputDirectory + File.separator + zipEntry.name)
        val fos = FileOutputStream(newFile)
        var len: Int
        while (zis.read(buffer).also { len = it } > 0) {
            fos.write(buffer, 0, len)
        }
        fos.close()
        zipEntry = zis.nextEntry
    }
    zis.closeEntry()
    zis.close()
}

위의 코드는 java.util.zip 패키지를 사용하여 압축 파일의 내용을 해제하는 간단한 예제입니다.

이렇게 파일을 압축하고 해제하는 방법을 통해 코틀린 및 자바에서 파일 처리 기능을 활용할 수 있습니다.

참고 자료