package Ġcom . zhang t eng . utils Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Environment Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . util . Log Ċ import Ġjava . io .* Ċ import Ġjava . net . URLConnection Ċ import Ġjava . text . Decimal Format Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* Ġåľ¨ æĮĩå®ļçļĦ ä½įç½® åĪĽå»º æĸĩä»¶å¤¹ Ċ Ġ* Ċ Ġ* Ġ@ return Ġ èĭ¥ åĪĽå»º æĪĲåĬŁ ï¼Į åĪĻ è¿ĶåĽŀ True ï¼Ľ åıį ä¹ĭ ï¼Į åĪĻ è¿ĶåĽŀ False Ċ Ġ*/ Ċ fun ĠString . mk Dir (): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn ĠFile ( this ). mkdir s () Ċ } Ċ Ċ /** Ċ Ġ* ĠåĪłéĻ¤ æĮĩå®ļ çļĦæĸĩä»¶ Ċ Ġ* Ċ Ġ* Ġ@ return Ġ èĭ¥ åĪłéĻ¤ æĪĲåĬŁ ï¼Į åĪĻ è¿ĶåĽŀ True ï¼Ľ åıį ä¹ĭ ï¼Į åĪĻ è¿ĶåĽŀ False Ċ Ġ*/ Ċ fun ĠString . delete File (): ĠBoolean Ġ{ ĊĠĠĠ Ġvar Ġresult Ġ= Ġfalse ĊĠĠĠ Ġval Ġfile Ġ= ĠFile ( this ) ĊĠĠĠ Ġif Ġ( file . exists ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġfile . delete () ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġresult Ċ } Ċ Ċ /** Ċ Ġ* ĠåĪłéĻ¤ æĮĩå®ļ çļĦæĸĩä»¶ å¤¹ Ċ Ġ* Ċ Ġ* Ġ@ param Ġdel File Ġæĸĩä»¶ å¤¹ ä¸Ń æĺ¯åĲ¦ åĮħåĲ« æĸĩä»¶ Ċ Ġ* Ġ@ return Ġ èĭ¥ åĪłéĻ¤ æĪĲåĬŁ ï¼Į åĪĻ è¿ĶåĽŀ True ï¼Ľ åıį ä¹ĭ ï¼Į åĪĻ è¿ĶåĽŀ False Ċ Ġ*/ Ċ fun ĠString . delete Dir ( del File : ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġfile Ġ= ĠFile ( this ) ĊĠĠĠ Ġif Ġ(! file . exists ()) Ġreturn Ġtrue ĊĠĠĠ Ġreturn Ġif Ġ( del File ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( file . isFile ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile . delete () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( file . isDirectory ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( file . list Files () Ġ== Ġnull Ġ|| Ġfile . list Files () !!. isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile . delete () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġz files Ġ= Ġfile . list Files () !!. size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġde lfile Ġ= Ġfile . list Files () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġz files ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( de lfile ! ![ i ]. isDirectory ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġde lfile [ i ]. absolute Path . delete Dir ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġde lfile [ i ]. delete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile . delete () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġfile . delete () ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġ å¤įåĪ¶ æĸĩä»¶ / æĸĩä»¶å¤¹ Ġ èĭ¥ è¦ģ è¿Ľè¡Į æĸĩä»¶å¤¹ å¤įåĪ¶ ï¼Į è¯· åĭ ¿ å°Ĩ çĽ®æłĩ æĸĩä»¶å¤¹ ç½® äºİ æºĲ æĸĩä»¶å¤¹ ä¸Ń Ċ Ġ* Ċ Ġ* Ġ@ param Ġtarget ĠĠ Ġ çĽ®æłĩ æĸĩä»¶ ï¼Ī å¤¹ ï¼ī Ċ Ġ* Ġ@ param Ġis Folder Ġ èĭ¥ è¿Ľè¡Į æĸĩä»¶å¤¹ å¤įåĪ¶ ï¼Į åĪĻ ä¸º True ï¼Ľ åıį ä¹ĭ ä¸º False Ċ Ġ* Ġ@ throws ĠIOException Ċ Ġ*/ Ċ @ Throws ( IOException :: class ) Ċ fun ĠString ?. copy ( target : ĠString ?, Ġis Folder : ĠBoolean ) Ġ{ ĊĠĠĠ Ġif Ġ( this Ġ== Ġnull Ġ|| Ġtarget Ġ== Ġnull ) Ġreturn ĊĠĠĠ Ġif Ġ( is Folder ) Ġ{ ĊĠĠĠĠĠĠĠ ĠFile ( target ). mkdir s () ĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= ĠFile ( this ) ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġa . list () Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġvar Ġtemp : ĠFile ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġfile . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Ġ= Ġif Ġ( this . endsWith ( File . separator )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile ( this Ġ+ Ġfile [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile ( this Ġ+ ĠFile . separator Ġ+ Ġfile [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( temp . isFile ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Ġ= ĠFileInputStream ( temp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= ĠFileOutputStream ( target Ġ+ Ġ"/" Ġ+ Ġtemp . name . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb Ġ= ĠByteArray ( 1 0 2 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġlen : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( input . read ( b ). also Ġ{ Ġlen Ġ= Ġit Ġ} Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput . write ( b , Ġ 0 , Ġlen ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput . flush () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( temp . isDirectory ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( this Ġ+ Ġ"/" Ġ+ Ġfile [ i ]). copy ( target Ġ+ Ġ"/" Ġ+ Ġfile [ i ], Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġby ter ead Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġold file Ġ= ĠFile ( this ) ĊĠĠĠĠĠĠĠ Ġif Ġ( old file . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġin Stream : ĠInputStream Ġ= ĠFileInputStream ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( target ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile . parent File ?. mkdir s () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile . createNew File () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfs Ġ= ĠFileOutputStream ( file ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠByteArray ( 1 0 2 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( in Stream . read ( buffer ). also Ġ{ Ġby ter ead Ġ= Ġit Ġ} Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfs . write ( buffer , Ġ 0 , Ġby ter ead ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin Stream . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfs . close () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġ ç§»åĬ¨ æĮĩå®ļ çļĦæĸĩä»¶ ï¼Ī å¤¹ ï¼ī åĪ° çĽ®æłĩ æĸĩä»¶ ï¼Ī å¤¹ ï¼ī Ċ Ġ* Ċ Ġ* Ġ@ param Ġtarget ĠĠ Ġ çĽ®æłĩ æĸĩä»¶ ï¼Ī å¤¹ ï¼ī Ċ Ġ* Ġ@ param Ġis Folder Ġ èĭ¥ ä¸º æĸĩä»¶å¤¹ ï¼Į åĪĻ ä¸º True ï¼Ľ åıį ä¹ĭ ä¸º False Ċ Ġ* Ġ@ return Ċ Ġ* Ġ@ throws ĠIOException Ċ Ġ*/ Ċ @ Throws ( IOException :: class ) Ċ fun ĠString . move ( target : ĠString ?, Ġis Folder : ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠ Ġcopy ( target , Ġis Folder ) ĊĠĠĠ Ġreturn Ġif Ġ( is Folder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdelete Dir ( true ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġdelete File () ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġèİ·åıĸ æĸĩä»¶ æĮĩå®ļ æĸĩä»¶çļĦ æĮĩå®ļ åįķä½į çļĦ å¤§å°ı Ċ Ġ* Ċ Ġ* Ġ@ param Ġsize Type Ġèİ·åıĸ å¤§å°ı çļĦ ç±»åŀĭ 1 ä¸º B ãĢģ 2 ä¸º KB ãĢģ 3 ä¸º MB ãĢģ 4 ä¸º GB Ċ Ġ* Ġ@ return Ġdouble åĢ¼çļĦ å¤§å°ı Ċ Ġ*/ Ċ fun ĠString ?. getFile Or Files Size ( size Type : ĠInt ): ĠDouble Ġ{ ĊĠĠĠ Ġif Ġ( TextUtils . isEmpty ( this )) Ġreturn Ġ 0 . 0 ĊĠĠĠ Ġval Ġfile Ġ= ĠFile ( this !! ) ĊĠĠĠ Ġvar ĠblockSize : ĠLong Ġ= Ġ 0 ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ ĠblockSize Ġ= Ġif Ġ( file . isDirectory ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile . get Files Size () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile . getFile Size () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ ĠLog . e (" èİ·åıĸ æĸĩä»¶ å¤§å°ı ", Ġ" èİ·åıĸ å¤±è´¥ !") ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠblockSize . format FileSize ( size Type ) Ċ } Ċ Ċ /** Ċ Ġ* Ġ è°ĥçĶ¨ æŃ¤ æĸ¹æ³ķ èĩªåĬ¨ è®¡ç®Ĺ æĮĩå®ļ æĸĩä»¶ æĪĸ æĮĩå®ļ æĸĩä»¶å¤¹ çļĦ å¤§å°ı Ċ Ġ* Ċ Ġ* Ġ@ return Ġ è®¡ç®Ĺ å¥½çļĦ å¸¦ B ãĢģ KB ãĢģ MB ãĢģ GB çļĦ åŃĹç¬¦ä¸² Ċ Ġ*/ Ċ fun ĠString ?. getFile Or Files Size (): ĠString ? Ġ{ ĊĠĠĠ Ġif Ġ( TextUtils . isEmpty ( this )) Ġreturn Ġnull ĊĠĠĠ Ġval Ġfile Ġ= ĠFile ( this !! ) ĊĠĠĠ Ġvar ĠblockSize : ĠLong Ġ= Ġ 0 ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ ĠblockSize Ġ= Ġif Ġ( file . isDirectory ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile . get Files Size () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile . getFile Size () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ ĠLog . e (" èİ·åıĸ æĸĩä»¶ å¤§å°ı ", Ġ" èİ·åıĸ å¤±è´¥ !") ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠblockSize . format FileSize () Ċ } Ċ Ċ /** Ċ Ġ* Ġæł¹æį® æĸĩä»¶ åĲİ ç¼Ģ åĲį åĪ¤æĸŃ Ġæĸĩä»¶ æĺ¯åĲ¦ æĺ¯ è§Ĩé¢ĳ æĸĩä»¶ Ċ Ġ* Ċ Ġ* Ġ@ return Ġæĺ¯åĲ¦ æĺ¯ è§Ĩé¢ĳ æĸĩä»¶ Ċ Ġ*/ Ċ fun ĠString ?. is Video File (): ĠBoolean Ġ{ ĊĠĠĠ Ġif Ġ( TextUtils . isEmpty ( this )) Ġreturn Ġfalse ĊĠĠĠ Ġval Ġindex Ġ= Ġthis !!. lastIndexOf (".") ĊĠĠĠ Ġif Ġ( index Ġ== Ġ- 1 ) Ġreturn Ġfalse ĊĠĠĠ Ġval ĠmimeType Ġ= Ġsubstring ( index ). get MimeType () ĊĠĠĠ Ġreturn Ġif Ġ( TextUtils . isEmpty ( mime Type )) Ġfalse Ġelse ĠmimeType !!. contains (" video /") Ċ } Ċ Ċ /** Ċ Ġ* Ġæł¹æį® æĸĩä»¶ mime Ty ep åĪ¤æĸŃ Ġæĸĩä»¶ æĺ¯åĲ¦ æĺ¯ è§Ĩé¢ĳ æĸĩä»¶ Ċ Ġ* Ċ Ġ* Ġ@ return Ġæĺ¯åĲ¦ æĺ¯ è§Ĩé¢ĳ æĸĩä»¶ Ċ Ġ*/ Ċ fun ĠString ?. is Video File As Mime (): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġ! TextUtils . isEmpty ( this ) Ġ&& Ġthis !!. contains (" video /") Ċ } Ċ Ċ /** Ċ Ġ* ĠGet Ġthe ĠMime ĠType Ġfrom Ġa ĠFile Ċ Ġ* Ċ Ġ* Ġ@ return Ġè¿ĶåĽŀ MIME ç±»åŀĭ Ċ Ġ*/ Ċ fun ĠString ?. get MimeType (): ĠString ? Ġ{ ĊĠĠĠ Ġval ĠfileName Map Ġ= ĠURL Connection . get FileName Map () ĊĠĠĠ Ġvar Ġtype : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġtype Ġ= ĠfileName Map . get ContentType For ( this ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġtype Ċ } Ċ Ċ /** Ċ Ġ* Ġèİ·åıĸ æĮĩå®ļ æĸĩä»¶ å¤§å°ı Ċ Ġ* Ċ Ġ* Ġ@ return Ċ Ġ*/ Ċ @ Throws ( Exception :: class ) Ċ fun ĠFile ?. getFile Size (): ĠLong Ġ{ ĊĠĠĠ Ġvar Ġsize : ĠLong Ġ= Ġ 0 ĊĠĠĠ Ġif Ġ( this Ġ!= Ġnull Ġ&& Ġexists ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfis Ġ= ĠFileInputStream ( this ) ĊĠĠĠĠĠĠĠ Ġsize Ġ= Ġfis . available (). to Long () ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . e (" èİ·åıĸ æĸĩä»¶ å¤§å°ı ", Ġ" æĸĩä»¶ ä¸įåŃĺåľ¨ !") ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġsize Ċ } Ċ Ċ /** Ċ Ġ* Ġèİ·åıĸ æĮĩå®ļ æĸĩä»¶å¤¹ å¤§å°ı Ċ Ġ* Ċ Ġ* Ġ@ return Ċ Ġ*/ Ċ @ Throws ( Exception :: class ) Ċ fun ĠFile ?. get Files Size (): ĠLong Ġ{ ĊĠĠĠ Ġvar Ġsize : ĠLong Ġ= Ġ 0 ĊĠĠĠ Ġif Ġ( this Ġ!= Ġnull Ġ&& Ġexists () Ġ&& Ġis Directory ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġf list Ġ= Ġlist Files () ĊĠĠĠĠĠĠĠ Ġfor Ġ( file Ġin Ġf list ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= Ġif Ġ( file . isDirectory ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ+ Ġfile . get Files Size () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ+ Ġfile . getFile Size () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġsize Ċ } Ċ Ċ /** Ċ Ġ* Ġ è½¬æį¢ æĸĩä»¶ å¤§å°ı Ċ Ġ* Ċ Ġ* Ġ@ return Ċ Ġ*/ Ċ fun ĠLong . format FileSize (): ĠString Ġ{ ĊĠĠĠ Ġval Ġdf Ġ= ĠDecimal Format ("# . 0 0 ") ĊĠĠĠ Ġvar ĠfileSize String Ġ= Ġ"" ĊĠĠĠ Ġval Ġwrong Size Ġ= Ġ" 0 B " ĊĠĠĠ Ġif Ġ( this Ġ== Ġ 0 L ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwrong Size ĊĠĠĠ Ġ} ĊĠĠĠ ĠfileSize String Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġthis Ġ< Ġ 1 0 2 4 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdf . format ( toDouble ()) Ġ+ Ġ" B " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthis Ġ< Ġ 1 0 4 8 5 7 6 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdf . format ( toDouble () Ġ/ Ġ 1 0 2 4 ) Ġ+ Ġ" KB " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthis Ġ< Ġ 1 0 7 3 7 4 1 8 2 4 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdf . format ( toDouble () Ġ/ Ġ 1 0 4 8 5 7 6 ) Ġ+ Ġ" MB " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdf . format ( toDouble () Ġ/ Ġ 1 0 7 3 7 4 1 8 2 4 ) Ġ+ Ġ" GB " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠfileSize String Ċ } Ċ Ċ /** Ċ Ġ* Ġ è½¬æį¢ æĸĩä»¶ å¤§å°ı , æĮĩå®ļ è½¬æį¢ çļĦ ç±»åŀĭ Ċ Ġ* Ċ Ġ* Ġ@ param Ġsize Type Ġ 1 : b Ġ 2 : kb Ġ 3 : mb Ġ 4 : gb Ċ Ġ* Ġ@ return Ċ Ġ*/ Ċ fun ĠLong . format FileSize ( size Type : ĠInt Ġ= Ġ 1 ): ĠDouble Ġ{ ĊĠĠĠ Ġval Ġdf Ġ= ĠDecimal Format ("# . 0 0 ") ĊĠĠĠ Ġvar ĠfileSize Long Ġ= Ġ 0 . 0 ĊĠĠĠ Ġwhen Ġ( size Type ) Ġ{ ĊĠĠĠĠĠĠĠĠ 1 Ġ-> ĠfileSize Long Ġ= Ġdf . format ( toDouble ()). toDouble () ĊĠĠĠĠĠĠĠĠ 2 Ġ-> ĠfileSize Long Ġ= Ġdf . format ( toDouble () Ġ/ Ġ 1 0 2 4 ). toDouble () ĊĠĠĠĠĠĠĠĠ 3 Ġ-> ĠfileSize Long Ġ= Ġdf . format ( toDouble () Ġ/ Ġ 1 0 4 8 5 7 6 ). toDouble () ĊĠĠĠĠĠĠĠĠ 4 Ġ-> ĠfileSize Long Ġ= Ġdf . format ( toDouble () Ġ/ Ġ 1 0 7 3 7 4 1 8 2 4 ). toDouble () ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠfileSize Long Ċ } Ċ Ċ /** Ċ Ġ* Ġèİ·åıĸ ç¼ĵåŃĺ æĸĩä»¶å¤¹ Ċ Ġ* Ċ Ġ* Ġ@ return Ċ Ġ*/ Ċ fun ĠContext ?. get Disk Cache Dir (): ĠString ? Ġ{ ĊĠĠĠ Ġif Ġ( this Ġ== Ġnull ) Ġreturn Ġthis ?. external Cache Dir ?. absolute Path ĊĠĠĠ Ġ// is External Storage E mul ated () è®¾å¤ĩ çļĦ å¤ĸ åŃĺ æĺ¯åĲ¦ æĺ¯ çĶ¨ åĨħåŃĺ æ¨¡ æĭŁ çļĦ ï¼Į æĺ¯ åĪĻ è¿ĶåĽŀ true ĊĠĠĠ Ġreturn Ġif Ġ(( Environment . MEDIA _ MOUNT ED Ġ== ĠEnvironment . get External Storage State () Ġ|| Ġ! Environment . is External Storage E mul ated ()) Ġ&& Ġexternal Cache Dir Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġexternal Cache Dir !!. absolute Path ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġcache Dir . absolute Path ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġèİ·åıĸ åĽ¾çīĩ æĸĩä»¶å¤¹ Ċ Ġ* Ċ Ġ* Ġ@ return Ġæĸĩä»¶ å¤¹ è·¯å¾Ħ Ċ Ġ*/ Ċ val Ġpicture Dir : ĠString ĊĠĠĠ Ġget () Ġ= ĠEnvironment . get External Storage Public Directory ( Environment . DIRECTORY _ PI CTURE S ). absolute Path Ċ Ċ /** Ċ Ġ* Ġèİ·åıĸ è§Ĩé¢ĳ æĸĩä»¶å¤¹ Ċ Ġ* Ċ Ġ* Ġ@ return Ġæĸĩä»¶ å¤¹ è·¯å¾Ħ Ċ Ġ*/ Ċ val Ġvideo Dir : ĠString ĊĠĠĠ Ġget () Ġ= ĠEnvironment . get External Storage Public Directory ( Environment . DIRECTORY _ MO VI ES ). absolute Path Ċ Ċ /** Ċ Ġ* Ġèİ·åıĸ åªĴ ä½ĵ æĸĩä»¶å¤¹ Ċ Ġ* Ċ Ġ* Ġ@ return Ċ Ġ*/ Ċ fun ĠContext ?. get Files Dir (): ĠString ? Ġ{ ĊĠĠĠ Ġif Ġ( this Ġ== Ġnull ) Ġreturn Ġthis ?. files Dir ?. absolute Path ĊĠĠĠ Ġ// is External Storage E mul ated () è®¾å¤ĩ çļĦ å¤ĸ åŃĺ æĺ¯åĲ¦ æĺ¯ çĶ¨ åĨħåŃĺ æ¨¡ æĭŁ çļĦ ï¼Į æĺ¯ åĪĻ è¿ĶåĽŀ true ĊĠĠĠ Ġreturn Ġif Ġ( Environment . MEDIA _ MOUNT ED Ġ== ĠEnvironment . get External Storage State () Ġ|| Ġ! Environment . is External Storage E mul ated ()) Ġ{ ĊĠĠĠĠĠĠĠ ĠEnvironment . get External Storage Directory (). absolute Path ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġfiles Dir . absolute Path ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġåľ¨ ç¼ĵåŃĺ è·¯å¾Ħ éĩĮ åĪĽå»º æĸĩä»¶ Ċ Ġ* Ċ Ġ* Ġ@ param Ġroot Path Ġæĸĩä»¶ å¤¹ æł¹ è·¯å¾Ħ Ċ Ġ* Ġ@ param ĠfilePath Ġ çĽ¸ å¯¹ è·¯å¾Ħ Ċ Ġ* Ġ@ return Ġfile Ċ Ġ*/ Ċ fun ĠContext ?. create Image File ( rootPath : ĠString , ĠfilePath : ĠString ): ĠFile Ġ{ ĊĠĠĠ Ġval Ġtime Stamp Ġ= ĠSimpleDateFormat (" yyyy MM dd HH mm ss ", ĠLocale . CH INA ). format ( Date ()) ĊĠĠĠ Ġval Ġdir Ġ= ĠFile ( rootPath Ġ+ ĠfilePath ) ĊĠĠĠ Ġif Ġ(! dir . exists ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġdir . mkdir s () ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠFile ( dir , Ġ"$ time Stamp . jpg ") Ċ } Ċ Ċ /** Ċ Ġ* Ġåľ¨ ç¼ĵåŃĺ è·¯å¾Ħ éĩĮ åĪĽå»º åĪĿå§ĭ æĸĩä»¶å¤¹ ãĢĤ ä¿ĿåŃĺ æĭ į æĳ Ħ åĽ¾çīĩ åĴĮ åī ª è£ ģ åĲİçļĦ åĽ¾çīĩ Ċ Ġ* Ċ Ġ* Ġ@ param Ġroot Path Ġæĸĩä»¶ å¤¹ æł¹ è·¯å¾Ħ Ċ Ġ* Ġ@ param ĠfilePath Ġ çĽ¸ å¯¹ è·¯å¾Ħ Ċ Ġ*/ Ċ fun ĠContext ?. create File ( rootPath : ĠString , ĠfilePath : ĠString ) Ġ{ ĊĠĠĠ Ġval Ġdir Ġ= ĠFile ( rootPath Ġ+ ĠfilePath ) ĊĠĠĠ Ġval Ġcrop File Ġ= ĠFile ("$ rootPath $ filePath / crop ") ĊĠĠĠ Ġif Ġ(! dir . exists ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! dir . isDirectory ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdir . delete () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdir . mkdir s () ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ(! crop File . exists ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( crop File . parent File Ġ!= Ġnull Ġ&& Ġ! crop File . parent File !!. isDirectory ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcrop File . parent File !!. delete () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcrop File . mkdir s () ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġfile Ġ= ĠFile ( crop File , Ġ". nome dia ") Ġ// ĠåĪĽå»º å¿½ è§Ĩ æĸĩä»¶ ãĢĤ ĠĠ Ġæľī è¯¥ æĸĩä»¶ ï¼Į ç³»ç»Ł å°Ĩ æ£Ģ ç´¢ ä¸įåĪ° æŃ¤ æĸĩä»¶å¤¹ ä¸ĭçļĦ åĽ¾çīĩ ãĢĤ ĊĠĠĠ Ġif Ġ(! file . exists ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile . createNew File () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġèİ·åıĸ ç¼ĵåŃĺ è·¯å¾Ħ éĩĮ çļĦ åī ª è£ ģ æĸĩä»¶å¤¹ Ċ Ġ* Ċ Ġ* Ġ@ param Ġroot Path Ġæĸĩä»¶ å¤¹ æł¹ è·¯å¾Ħ Ċ Ġ* Ġ@ param Ġpath Ġ çĽ¸ å¯¹ è·¯å¾Ħ Ċ Ġ*/ Ċ fun ĠContext ?. getC rop Dir ( rootPath : ĠString , Ġpath : ĠString ): ĠFile Ġ{ ĊĠĠĠ Ġval Ġcrop File Ġ= ĠFile ("$ rootPath $ path / crop ") ĊĠĠĠ Ġif Ġ(! crop File . exists ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( crop File . parent File Ġ!= Ġnull Ġ&& Ġ! crop File . parent File !!. isDirectory ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcrop File . parent File !!. delete () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcrop File . mkdir s () ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġcrop File Ċ } Ċ Ċ /** Ċ Ġ* Ġ@ param ĠfileName Ġ çĽ®æłĩ æĸĩä»¶ è·¯å¾Ħ Ċ Ġ* Ġ@ description Ġå°Ĩ assets æĸĩä»¶ è½¬ æĪĲ json Ċ Ġ* Ġ@ author : ĠSw ing Ġ 7 6 3 2 6 3 3 1 1 @ qq . com Ċ Ġ* Ġ@ date : Ġ 2 0 2 0 / 1 2 / 2 8 Ġ 0 0 2 8 Ġä¸Ĭ åįĪ Ġ 1 0 : 4 9 Ċ Ġ*/ Ċ fun ĠContext ?. get Json From Assets ( fileName : ĠString ?): ĠString ? Ġ{ ĊĠĠĠ Ġif Ġ( this Ġ== Ġnull Ġ|| ĠfileName Ġ== Ġnull ) Ġreturn Ġnull ĊĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder () ĊĠĠĠ Ġval Ġam Ġ= Ġassets ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbr Ġ= ĠBufferedReader ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInputStreamReader ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġam . open ( fileName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġvar Ġnext : ĠString ? ĊĠĠĠĠĠĠĠ Ġwhile Ġ( null Ġ!= Ġbr . readLine (). also Ġ{ Ġnext Ġ= Ġit Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( next ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġsb . delete ( 0 , Ġsb . length ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġsb . toString (). trim Ġ{ Ġit Ġ<= Ġ' Ġ' Ġ} Ċ }