package Ġcom . github . di amond miner 8 8 . app Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Environment Ċ import Ġandroid . util . Log Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . app . Activity Compat Ċ import Ġcom . github . di amond miner 8 8 . zip . Zip Reader Ċ import Ġcom . github . di amond miner 8 8 . zip . Zip Writer Ċ import Ġjava . io . File Ċ import Ġkotlin . system . measure Nano Time Ċ Ċ const Ġval ĠTAG Ġ= Ġ" zip - android " Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( check Self Permission ( Manifest . permission . WRITE _ EXTERNAL _ STORAGE ) Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġrequest Permissions () ĊĊĠĠĠĠĠĠĠ Ġval Ġbase Dir Ġ= ĠFile ( Environment . get External Storage Directory (), Ġ"/ zip - android ") ĊĠĠĠĠĠĠĠ Ġval Ġzip File Ġ= ĠFile ( base Dir , Ġ" test zip . zip ") ĊĠĠĠĠĠĠĠ Ġbase Dir . mkdir () ĊĠĠĠĠĠĠĠ Ġzip File . createNew File () ĊĠĠĠĠĠĠĠ Ġzip File . write Bytes ( resources . open Raw Resource ( R . raw . test zip ). read Bytes ()) ĊĊĠĠĠĠĠĠĠ ĠZip Reader ( zip File ). use Ġ{ Ġzip Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" Entry Ġcount : Ġ${ zip . entry Count }") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" Entries : Ġ${ zip . entry Names . join ToString () }") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġzip . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" Entry : Ġ${ it . name } ĠSize : Ġ${ it . size } ĠModified : Ġ${ it . lastModified } Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" JNI Ġtime : Ġ${ measure Nano Time Ġ{ Ġit . size Ġ}} ns ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! it . is Dir ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" Content : Ġ${ it . read (). decode ToString () }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠZip Writer ( zip File , Ġtrue ). use Ġ{ Ġzip Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġzip . set Comment (" a Ġcomment ". toByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġzip . delete Entries (" abc . txt ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġ" hot Ġgarbage ". toByteArray () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġzip . write Entry (" compressed . txt ", Ġtext ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġzip . write Entry Un compressed (" un compressed . txt ", Ġtext ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġzip . write Aligned (" aligned . txt ", Ġ 4 , Ġtext ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġzip . write Un compressed Aligned (" un compressed aligned . txt ", Ġ 4 , Ġtext ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠZip Reader ( zip File ). use Ġ{ Ġzip Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" Modified Ġzip Ġcomment : Ġ${ zip . comment }") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" Modified Ġzip Ġentries : Ġ${ zip . entry Names . join ToString () }") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= Ġzip . open Entry (" compressed . txt ") ?. read ()?. decode ToString () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" Created Ġentry Ġcontent : Ġ$ content ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrequest Permissions () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠrequestId Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġstorage Per ms Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . READ _ EXTERNAL _ STORAGE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . WRITE _ EXTERNAL _ STORAGE ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstorage Per ms , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠrequestId ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ