[kotlin] 코틀린에서 자바 파일 압축 및 압축 해제하기
코틀린에서 자바 파일을 압축하고 압축을 해제하는 것은 자바의 라이브러리를 활용하여 간단하게 수행할 수 있습니다. 여기에서는 java.util.zip
패키지를 사용하여 압축 파일을 만들고 압축을 해제하는 방법을 살펴보겠습니다.
압축 파일 만들기
import java.io.File
import java.io.FileInputStream
import java.io.FileOutputStream
import java.util.zip.ZipEntry
import java.util.zip.ZipOutputStream
fun createZipFile(sourceDir: String, outputZipFile: String) {
val srcFile = File(sourceDir)
val files = srcFile.walk().filter { it.isFile }.toList()
FileOutputStream(outputZipFile).use { fos ->
ZipOutputStream(fos).use { zos ->
files.forEach { file ->
val entry = ZipEntry(srcFile.toPath().relativize(file.toPath()).toString())
zos.putNextEntry(entry)
FileInputStream(file).use { input ->
input.copyTo(zos)
}
zos.closeEntry()
}
}
}
}
createZipFile
함수는 지정된 디렉토리의 파일을 압축파일로 만듭니다. sourceDir
은 압축할 파일이 있는 디렉토리 경로이고 outputZipFile
은 생성될 압축파일의 이름입니다.
압축 해제하기
import java.io.File
import java.util.zip.ZipEntry
import java.util.zip.ZipInputStream
fun extractZipFile(zipFile: String, outputDir: String) {
val file = File(zipFile)
val buffer = ByteArray(1024)
ZipInputStream(file.inputStream()).use { zis ->
var entry: ZipEntry?
while (zis.nextEntry.also { entry = it } != null) {
val newFile = File(outputDir, entry!!.name)
if (entry!!.isDirectory) {
newFile.mkdirs()
} else {
newFile.parentFile.mkdirs()
newFile.outputStream().use { fos ->
var len: Int
while (zis.read(buffer).also { len = it } > 0) {
fos.write(buffer, 0, len)
}
}
}
}
}
}
extractZipFile
함수는 압축파일을 지정된 경로에 해제합니다. zipFile
은 압축해제할 파일 경로이고, outputDir
은 압축을 해제할 디렉토리 경로입니다.
이제 코틀린에서 자바 파일을 압축 및 압축 해제하는 방법에 대해 알아 보았습니다. 만약 이와 관련하여 추가적인 지식이 필요하다면 아래의 자바문서를 참고하세요.