Skip to content

Instantly share code, notes, and snippets.

@FireZenk
Forked from sgdan/gzip.kts
Last active November 22, 2018 15:09
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save FireZenk/bd705954422334053698dce197bcd39e to your computer and use it in GitHub Desktop.
Save FireZenk/bd705954422334053698dce197bcd39e to your computer and use it in GitHub Desktop.
Kotlin code to compress/uncompress a string with gzip
import java.io.ByteArrayOutputStream
import java.io.File
import java.nio.charset.StandardCharsets.UTF_8
import java.util.zip.GZIPInputStream
import java.util.zip.GZIPOutputStream
fun String.gzip(): ByteArray {
val bos = ByteArrayOutputStream()
GZIPOutputStream(bos).bufferedWriter(UTF_8).use { it.write(this) }
return bos.toByteArray()
}
fun ByteArray.ungzip(): String =
GZIPInputStream(this.inputStream()).bufferedReader(UTF_8).use { it.readText() }
//val content = "a string with some content"
val file = File("gzip.kts")
val content = file.readText()
println("size of original: ${content.length}")
val zipped = content.gzip()
println("size zipped: ${zipped.size}")
val unzipped = zipped.ungzip()
println("size unzipped: ${unzipped.length}")
assert(unzipped == content)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment