Advertisement
okardec

Untitled

Oct 1st, 2020
816
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 1.70 KB | None | 0 0
  1. package core.base
  2.  
  3.  
  4. /**
  5. uma classe para comprimir/descomprimir em gzip
  6. deve conseguir trabalhar com bytearray/file/string como parametro de entrada
  7. - comprimir em bytearray e arquivo
  8. - descomprimir em byterray, arquivo e string
  9.  
  10. mas veja bem, é uma classe caprichada pq é pequena, quero que vc consiga fazer funcionar assim
  11. val minhaString = GZIP(byteArray).decompress.asString(charsetOpcional)
  12.  */
  13.  
  14. import java.io.ByteArrayOutputStream
  15. import java.io.File
  16. import java.nio.charset.Charset
  17. import java.nio.charset.StandardCharsets.UTF_8
  18. import java.util.zip.GZIPInputStream
  19. import java.util.zip.GZIPOutputStream
  20.  
  21. class GZIP {
  22.  
  23.     private var data: ByteArray? = null
  24.  
  25.     /**
  26.      * recebe um byteArray
  27.      */
  28.     constructor(content: ByteArray) {
  29.         data = content
  30.     }
  31.     /**
  32.      * recebe uma scrint que será convertida para byteArray
  33.      */
  34.     constructor(string: String) {
  35.         data = string.toByteArray()
  36.     }
  37.  
  38.     /**
  39.      * rebece o arquivo q retornará o conteudo
  40.      */
  41.     constructor(file: File) {
  42.         if (!file.exists()){
  43.             return;
  44.         }        
  45.         data = file.readBytes()
  46.  
  47.     }
  48.  
  49.     val compress = compress()
  50.    
  51.     fun compress(): GZIP? {
  52.      
  53.         if (data==null){
  54.             return null;
  55.         }        
  56.         val bos = ByteArrayOutputStream()
  57.         GZIPOutputStream(bos).buffered(DEFAULT_BUFFER_SIZE).use { it.write(data) }
  58.         data = bos.toByteArray()
  59.         return this
  60.     }
  61.    
  62.     fun asByteArray(): ByteArray? {
  63.         return data
  64.     }
  65.     fun asFile(file: File) {
  66.         if (file.exists()){
  67.             return  
  68.         }
  69.         data?.let { file.writeBytes(it) }        
  70.     }
  71.    
  72.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement