package Ġv eg abo bo . ds us ide loader . util Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . net . Uri Ċ import Ġandroid . util . Log Ċ import Ġandroidx . document file . provider . Document File Ċ import Ġorg . t uka ani . xz . XZ InputStream Ċ import Ġjava . io . Buffered InputStream Ċ import Ġjava . util . zip . GZIP InputStream Ċ import Ġjava . util . zip . GZIP OutputStream Ċ Ċ class ĠDe Compression Utils ( ĊĠĠĠ Ġprivate Ġval Ġcontext : ĠContext , ĊĠĠĠ Ġprivate Ġval Ġinput File : ĠUri , ĊĠĠĠ Ġprivate Ġval ĠoutputFile : ĠString , ĊĠĠĠ Ġprivate Ġval Ġworkspace Folder : ĠDocument File Ċ ) Ġ{ ĊĊĠĠĠ Ġobject ĠConstants Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠG Z _ TO _ G SI _ OBJECT Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠX Z _ TO _ IMG Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠI MG _ TO _ GZ Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠG Z _ TO _ IMG Ġ= Ġ 3 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠWORK SPACE _ FOLDER Ġ= Ġ" workspace _ ds u helper " ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġextract XZ File (): ĠUri ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġextracted File : ĠDocument File ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġworkspace Folder . create File (" application / octet - stream ", ĠoutputFile ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfin Ġ= Ġcontext . content Resolver . open InputStream ( inputFile ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinp Ġ= ĠBuffered InputStream ( fin ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġout Ġ= Ġcontext . content Resolver . open OutputStream ( extract ed File !!. uri ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx z In Ġ= ĠX Z InputStream ( inp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠByteArray ( 8 1 9 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġn : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ(- 1 Ġ!= Ġx z In . read ( buffer ). also Ġ{ Ġn Ġ= Ġit Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout !!. write ( buffer , Ġ 0 , Ġn ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout !!. close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx z In . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġextracted File . uri ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" extract XZ File ", Ġe . stack Trace ToString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcompress G zip (): ĠUri ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcompressed File : ĠDocument File ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġworkspace Folder . create File (" application / octet - stream ", ĠoutputFile ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG ZIP OutputStream ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . content Resolver . open OutputStream ( compressed File !!. uri ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). use Ġ{ Ġg os Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . content Resolver . open InputStream ( inputFile ). use Ġ{ Ġfis Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠByteArray ( 1 0 2 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġlen : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( fis !!. read ( buffer ). also Ġ{ Ġlen Ġ= Ġit Ġ} Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg os . write ( buffer , Ġ 0 , Ġlen ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompressed File . uri ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" compress G zip ", Ġe . stack Trace ToString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġde compress G zip (): ĠUri ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdocument File : ĠDocument File ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġworkspace Folder . create File (" application / octet - stream ", ĠoutputFile ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG ZIP InputStream ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . content Resolver . open InputStream ( inputFile ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). use Ġ{ Ġg is Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . content Resolver . open OutputStream ( document File !!. uri ). use Ġ{ Ġf os Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠByteArray ( 1 0 2 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġlen : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( gis . read ( buffer ). also Ġ{ Ġlen Ġ= Ġit Ġ} Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf os !!. write ( buffer , Ġ 0 , Ġlen ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdocument File !!. uri ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" de compress G zip ", Ġe . stack Trace ToString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ }