/* Ċ Ġ* ĠMIT ĠLicense Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 Ġul tran ity Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE Ċ Ġ*/ Ċ package Ġcom . per ol . asd pl . pix ive z . objects Ċ Ċ import Ġandroid . os . Environment Ċ import Ġcom . per ol . asd pl . pix ive z . R Ċ import Ġcom . per ol . asd pl . pix ive z . responses . Ill ust Ċ import Ġcom . per ol . asd pl . pix ive z . services . P xE Z App Ċ import Ġorg . ro aring bitmap . Ro aring Bitmap Ċ import Ġjava . io .* Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* ĊĊ Ċ class ĠFileInfo ( file : ĠFile ) Ġ{ ĊĠĠĠ Ġvar Ġicon Ġ= Ġ" 0 " ĊĠĠĠ Ġvar Ġname : ĠString Ġ= Ġfile . name ĊĠĠĠ Ġvar Ġsize : ĠString Ġ= Ġ"" ĊĠĠĠ Ġvar Ġpixel : ĠString Ġ= Ġ"" ĊĠĠĠ Ġvar Ġtime : ĠString Ġ= Ġ"" ĊĠĠĠ Ġvar Ġpath : ĠString Ġ= Ġfile . path ĊĠĠĠ Ġvar Ġtype : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġlast Modify : ĠLong Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġbytes ize : ĠLong Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġill ust : Ill ust ?= null ĊĠĠĠ Ġvar Ġtarget : String ?= null ĊĠĠĠ Ġvar Ġchecked : Boolean = false ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" FileInfo {" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" icon =" Ġ+ Ġicon Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ", Ġname ='" Ġ+ Ġname Ġ+ Ġ'\'' Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ", Ġsize ='" Ġ+ Ġsize Ġ+ Ġ'\'' Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ", Ġtime ='" Ġ+ Ġtime Ġ+ Ġ'\'' Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ", Ġpath ='" Ġ+ Ġpath Ġ+ Ġ'\'' Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ", Ġtype =" Ġ+ Ġtype Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ", Ġlast Modify =" Ġ+ Ġlast Modify Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ", Ġbytes ize =" Ġ+ Ġbytes ize Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' }' ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Pic (): Boolean { ĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf (" jpg ", Ġ" jpeg ", Ġ" png ", Ġ" gif "). contains ( ext ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġext : String ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( name . contains (". ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdot Ġ= Ġname . lastIndexOf (".") // Ġ 1 2 3 . abc . txt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname . substring ( dot Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġval Ġpid : ĠLong ? ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ( Regex (" (? < =( pid )? _ ?) ([ 0 - 9 ]{ 7 , 8 }) ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. find ( name )?. value ?: "" ). to Long OrNull () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġpart : ĠString ĊĠĠĠ Ġget (){ ĊĠĠĠĠĠĠĠ Ġval Ġdot Ġ= Ġname . lastIndexOf (".") ĊĠĠĠĠĠĠĠ Ġreturn ĠRegex (""" (? <= _ p ?) ([ 0 - 9 ]{ 1 , 2 }) (? =\ .) """) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. find ( name , Ġif Ġ( dot Ġ- Ġ 4 Ġ> Ġ 0 ) Ġdot Ġ- Ġ 4 Ġelse Ġ 0 )?. value ?: "" ĊĠĠĠ Ġ} Ċ } Ċ Ċ interface ĠOn click Interface File Ġ{ ĊĠĠĠ Ġfun Ġitem Click ( position : ĠInt ) Ċ } Ċ Ċ object ĠFile Util { ĊĠĠĠ Ġval Ġsd Card Path : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠEnvironment . get External Storage Directory (). absolute Path ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠT _ DIR Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠT _ FILE Ġ= Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSORT _ NAME Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSORT _ DATE Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSORT _ SIZE Ġ= Ġ 2 ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġget FileList () ĊĠĠĠ Ġ} ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠéĢļè¿ĩ ä¼łåħ¥ çļĦ è·¯å¾Ħ , è¿ĶåĽŀ è¯¥ è·¯å¾Ħ ä¸ĭçļĦ æīĢæľī çļĦæĸĩä»¶ åĴĮ æĸĩä»¶å¤¹ åĪĹè¡¨ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġpath ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠgetList Data ( ĊĠĠĠĠĠĠĠ Ġpath : ĠString , ĊĠĠĠĠĠĠĠ Ġpic Only : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġwith Folder : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġshow Parent : ĠBoolean Ġ= Ġtrue // , ĊĠĠĠĠĠĠĠ Ġ// include Sub Folder : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġ): ĠMutable List < FileInfo > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠArrayList < FileInfo >() // çĶ¨æĿ¥ åŃĺåĤ¨ ä¾¿ åĪ© ä¹ĭåĲİ æ¯ı ä¸Ģä¸ª æĸĩä»¶ ä¸ŃçļĦ ä¿¡æģ¯ ĊĠĠĠĠĠĠĠ Ġval Ġp file Ġ= ĠFile ( path )// Ġ åħ´ å»º å®ŀä¾ĭ åĮĸ æĸĩä»¶ å¯¹è±¡ ĊĠĠĠĠĠĠĠ Ġif Ġ(! p file . exists ()) Ġ{// ĠåĪ¤æĸŃ è·¯å¾Ħ æĺ¯åĲ¦ åŃĺåľ¨ ĊĠĠĠĠĠĠĠ Ġ// å¦Ĥæŀľ æ²¡æľī è¿Ļä¸ª æĸĩä»¶ çĽ®å½ķ ãĢĤ éĤ£ä¹Ī è¿ĻéĩĮ åİ» åĪĽå»º ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp file . mkdir s () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif ( show Parent Ġ&& Ġp file . parent File Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparent Ġ= ĠFileInfo ( p file . parent File !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġèİ·åıĸ æĸĩä»¶å¤¹ çĽ®å½ķ ç»ĵæŀĦ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent . icon Ġ= ĠR . drawable . ic _ action _ folder . toString () // åĽ¾ æłĩ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent . bytes ize Ġ= Ġp file . length () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent . size Ġ= Ġparent . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent . name Ġ= Ġ".. " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent . type Ġ= ĠT _ DIR ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent . time Ġ= ĠSimpleDateFormat (" yyyy - MM - dd ĠHH : mm ", ĠLocale . ROOT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. format ( Date ( p file . lastModified ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( parent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġfiles : ĠArray < File >? Ġ= Ġp file . list Files () // æĸĩä»¶ å¯¹è±¡ æķ°ç»Ħ Ġ// Ġ è¯¥ æĸĩä»¶ å¯¹è±¡ ä¸ĭ æīĢ å±ŀ çļĦæīĢæľī æĸĩä»¶ åĴĮ æĸĩä»¶å¤¹ åĪĹè¡¨ ĊĠĠĠĠĠĠĠ Ġif Ġ( files Ġ!= Ġnull Ġ&& Ġfiles . isNotEmpty ()) Ġ{// Ġ éĿŀ ç©º éªĮè¯ģ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . addAll ( files . map NotNull Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= ĠFileInfo ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . is Hidden ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ map NotNull Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . isDirectory // Ġæĸĩä»¶ å¤¹ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġit . can Read () // æĺ¯åĲ¦ åı¯ è¯» ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! with Folder ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ map NotNull Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġèİ·åıĸ æĸĩä»¶å¤¹ çĽ®å½ķ ç»ĵæŀĦ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . icon Ġ= ĠR . drawable . ic _ action _ folder . toString () // åĽ¾ æłĩ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . bytes ize Ġ= Ġit . length () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . size Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . list Files ()?. size . toString () // getSize ( item . bytes ize . toFloat ()) // å¤§å°ı ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . type Ġ= ĠT _ DIR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// if Ġ( include Sub Folder ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠ Ġlist . addAll ( getList Data ( it . path , include Sub Folder = true )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . isFile ) Ġ{// Ġæĸĩä»¶ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pic Only Ġ&& Ġ! item . is Pic ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ map NotNull Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . icon Ġ= Ġitem . path // Ġæł¹æį® æī©å±ķ åĲį èİ·åıĸ åĽ¾ æłĩ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . size Ġ= Ġget Size ( it . length (). toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . type Ġ= ĠT _ FILE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . time Ġ= ĠSimpleDateFormat (" yyyy - MM - dd ĠHH : mm ", ĠLocale . ROOT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. format ( Date ( it . lastModified ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġlist ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æł¼å¼ı è½¬æį¢ åºĶçĶ¨ å¤§å°ı Ġ åįķä½į " B , KB , MB , GB " ĊĠĠĠĠ Ġ*/ ĊĠĠĠĠ Ġfun Ġget Size ( length : ĠFloat ): ĠString Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġkb : ĠLong Ġ= Ġ 1 0 2 4 ĊĠĠĠĠĠĠĠ Ġval Ġmb Ġ= Ġ 1 0 2 4 Ġ* Ġkb ĊĠĠĠĠĠĠĠ Ġval Ġgb Ġ= Ġ 1 0 2 4 Ġ* Ġmb ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( length Ġ< Ġkb ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ("% dB ", Ġlength . toInt ()) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( length Ġ< Ġmb ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ("% . 2 f KB ", Ġlength Ġ/ Ġkb ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( length Ġ< Ġgb ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ("% . 2 f MB ", Ġlength Ġ/ Ġmb ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ("% . 2 f GB ", Ġlength Ġ/ Ġgb ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠSearch File ( list : ĠList < FileInfo >, Ġkeyword : ĠString ): ĠList < FileInfo > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsearch Result List Ġ= ĠArrayList < FileInfo >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġlist . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġapp Ġ= Ġlist [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( app . name . toLowerCase (). contains ( keyword . toLowerCase ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Result List . add ( app ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsearch Result List ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Group List ( path : ĠString , Ġrecursive : ĠBoolean Ġ= Ġfalse ): ĠMutable List < FileInfo > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠgetList Data ( path ) ĊĠĠĠĠĠĠĠ Ġval Ġdirs Ġ= ĠArrayList < FileInfo >() ĊĠĠĠĠĠĠĠ Ġval Ġfiles Ġ= ĠArrayList < FileInfo >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġlist . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġlist [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item . type Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdirs . add ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfiles . add ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( recursive ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsub Dirs Ġ= ĠArrayList < FileInfo >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( dir Ġin Ġdirs ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsub Dirs . addAll ( getGroup List ( dir . path )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirs . addAll ( sub Dirs ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdirs . addAll ( files ) ĊĠĠĠĠĠĠĠ Ġreturn Ġdirs ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete File ( path : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( path ) ĊĠĠĠĠĠĠĠ Ġif Ġ( file . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile . delete () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpaste File ( target Dir : ĠString , Ġfile : ĠFile ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew File Ġ= ĠFile ( target Dir , Ġfile . name ) ĊĠĠĠĠĠĠĠ Ġif Ġ( new File . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠToast . makeText ( this , new Path +" Ġalready Ġexists ", Toast . LENGTH _ SHORT ). show (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile . copy To ( new File ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 // ĠOK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpaste Dir ( target Dir : ĠString , Ġdir : ĠFile ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew Dir Ġ= ĠFile ( target Dir , Ġdir . name ) ĊĠĠĠĠĠĠĠ Ġdir . copy Re cursively ( new Dir , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġextra Path ( path : ĠString ): ĠList < String >? Ġ{ ĊĠĠĠĠĠĠĠ ĠFile ( path ). let Ġ{ Ġfile Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( file . exists ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfile . read Lines () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġbit Set File Log ( path : ĠString ): ĠRo aring Bitmap ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrr Ġ= ĠRo aring Bitmap () ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( path ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! file . exists ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġstream Ġ= ĠData InputStream ( FileInputStream ( file )) ĊĠĠĠĠĠĠĠ Ġrr . deserialize ( stream ) ĊĠĠĠĠĠĠĠ Ġ// Ġnumber Ġof Ġvalues Ġstored ? ĊĠĠĠĠĠĠĠ Ġval Ġcardinality Ġ= Ġrr . long Cardinality ĊĠĠĠĠĠĠĠ Ġreturn Ġrr ĊĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġlateinit Ġvar Ġfile List : List < Long > ĊĠĠĠ Ġlateinit Ġvar Ġextra Path : List < String > ĊĠĠĠ Ġlateinit Ġvar ĠList Log : Ro aring Bitmap ĊĠĠĠ Ġlateinit Ġvar Ġlocal Log : Ro aring Bitmap ĊĠĠĠ Ġfun Ġget FileList (){ ĊĠĠĠĠĠĠĠ Ġlocal Log Ġ= ĠRo aring Bitmap () ĊĠĠĠĠĠĠĠ Ġextra Path Ġ= ĠFile Util . extra Path ( P xE Z App . store path + File . separator +" path . txt ") ?: ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile Util . extra Path ( Environment . get External Storage Directory (). absolute Path Ġ+ ĠFile . separator Ġ+ Ġ" P xE z "+ File . separator +" path . txt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠlistOf () ĊĠĠĠĠĠĠĠ Ġfile List Ġ= ĠFile Util . getGroup List ( P xE Z App . store path , true ). map NotNull { Ġit . pid Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( extra Path . isNotEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġextra Path . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile Util . getGroup List ( it , true ). forEach Ġ{ it . pid ?. toInt ()?. let { local Log . add ( it )} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile List . plus ( File Util . getGroup List ( it , true ). map NotNull { Ġit . pid }) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠList Log Ġ= File Util . bit Set File Log ( P xE Z App . store path + File . separator +" ro aring bit . data ") ?: ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile Util . bit Set File Log ( Environment . get External Storage Directory (). absolute Path Ġ+ ĠFile . separator Ġ+ Ġ" P xE z "+ File . separator +" ro aring bit . data ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ro aring Bitmap () ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġhave Log (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ( File Util . bit Set File Log ( P xE Z App . store path + File . separator +" ro aring bit . data ") ?: ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile Util . bit Set File Log ( Environment . get External Storage Directory (). absolute Path Ġ+ ĠFile . separator Ġ+ Ġ" P xE z "+ File . separator +" ro aring bit . data ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ!= Ġnull ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġhave Extra Path (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ( File Util . extra Path ( P xE Z App . store path + File . separator +" path . txt ") ?: ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile Util . extra Path ( Environment . get External Storage Directory (). absolute Path Ġ+ ĠFile . separator Ġ+ Ġ" P xE z "+ File . separator +" path . txt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ!= Ġnull ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġis Downloaded ( ill ust : ĠIll ust ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġis Downloaded 2 ( ill ust )|| Ġis Downloaded 3 ( ill ust ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġlog Downloaded ( ill ust : ĠIll ust ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif ( is Downloaded 2 ( ill ust )) Ġ 1 Ġelse Ġ 0 Ġ+ Ġif ( is Downloaded 3 ( ill ust )) Ġ 1 Ġelse Ġ 0 ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġis Downloaded 2 ( ill ust : ĠIll ust ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfile List . contains ( ill ust . id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Downloaded 3 ( ill ust : ĠIll ust ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠList Log . contains ( ill ust . id . toInt ()) ĊĠĠĠ Ġ} Ċ } Ċ