[kotlin] 코틀린과 자바의 파일 압축 및 해제
파일 압축 및 해제는 많은 애플리케이션에서 필요한 기능 중 하나입니다. 코틀린 및 자바에서는 java.util.zip 패키지를 사용하여 파일을 압축하고 해제할 수 있습니다.
파일 압축
파일을 압축하기 위해서는 다음과 같은 단계를 따릅니다.
- ZipOutputStream을 사용하여 압축 할 대상 파일에 대한 출력 스트림을 생성합니다.
- 압축할 파일을 읽어 들인 후 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 패키지를 사용하여 파일을 압축하는 간단한 예제입니다.
파일 해제
해제할 압축 파일을 입력으로 받아서 해당 압축 파일의 내용을 해제하는 단계는 다음과 같습니다.
- ZipInputStream 을 사용하여 압축 파일을 입력으로 받습니다.
- 압축 파일의 내용을 해제합니다.
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 패키지를 사용하여 압축 파일의 내용을 해제하는 간단한 예제입니다.
이렇게 파일을 압축하고 해제하는 방법을 통해 코틀린 및 자바에서 파일 처리 기능을 활용할 수 있습니다.