Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package core.base
- /**
- uma classe para comprimir/descomprimir em gzip
- deve conseguir trabalhar com bytearray/file/string como parametro de entrada
- - comprimir em bytearray e arquivo
- - descomprimir em byterray, arquivo e string
- mas veja bem, é uma classe caprichada pq é pequena, quero que vc consiga fazer funcionar assim
- val minhaString = GZIP(byteArray).decompress.asString(charsetOpcional)
- */
- import java.io.ByteArrayOutputStream
- import java.io.File
- import java.nio.charset.Charset
- import java.nio.charset.StandardCharsets.UTF_8
- import java.util.zip.GZIPInputStream
- import java.util.zip.GZIPOutputStream
- class GZIP {
- private var data: ByteArray? = null
- /**
- * recebe um byteArray
- */
- constructor(content: ByteArray) {
- data = content
- }
- /**
- * recebe uma scrint que será convertida para byteArray
- */
- constructor(string: String) {
- data = string.toByteArray()
- }
- /**
- * rebece o arquivo q retornará o conteudo
- */
- constructor(file: File) {
- if (!file.exists()){
- return;
- }
- data = file.readBytes()
- }
- val compress = compress()
- fun compress(): GZIP? {
- if (data==null){
- return null;
- }
- val bos = ByteArrayOutputStream()
- GZIPOutputStream(bos).buffered(DEFAULT_BUFFER_SIZE).use { it.write(data) }
- data = bos.toByteArray()
- return this
- }
- fun asByteArray(): ByteArray? {
- return data
- }
- fun asFile(file: File) {
- if (file.exists()){
- return
- }
- data?.let { file.writeBytes(it) }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement