Skip to content

Instantly share code, notes, and snippets.

@sambos
Created May 3, 2018 15:51
Show Gist options
  • Save sambos/e00dc1d16813591a729945cae220de33 to your computer and use it in GitHub Desktop.
Save sambos/e00dc1d16813591a729945cae220de33 to your computer and use it in GitHub Desktop.
scala GZip Utils
package org.rsol.log.util
import java.util.zip.GZIPOutputStream
import java.io.ByteArrayOutputStream
import java.util.zip.GZIPInputStream
import java.io.ByteArrayInputStream
import org.apache.commons.io.IOUtils
object GZipUtil extends App {
val uncompressed = "some string"
val compresed_gzip = "L2A7HmJXaavXAcMAE/x+f23//m4f27Ht25/t40s/6D/7L2o//pF"
val c = compress(uncompressed.getBytes)
val c64 = org.apache.solr.common.util.Base64.byteArrayToBase64(c,0,c.length)
println(c64 == compresed_gzip)
println("compressedB64 -> " + c64)
println("uncompressed gzip -> " + new String(decompress(org.apache.solr.common.util.Base64.base64ToByteArray(compresed_gzip))))
def compress(data:Array[Byte]): Array[Byte] = {
val bos = new ByteArrayOutputStream(data.length)
val gzip = new GZIPOutputStream(bos)
gzip.write(data)
gzip.close()
val compressed = bos.toByteArray()
bos.close()
compressed
}
def decompress(compressed: Array[Byte]) : String = {
val bis = new ByteArrayInputStream(compressed)
val gis = new GZIPInputStream(bis)
val str = new String(IOUtils.toByteArray(gis), "UTF-8")
gis.close
str
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment