/** čĊ Ġ* ĠCopyright Ġ 2 0 1 7 ĠJ ess Y an čĊ Ġ* čĊ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); čĊ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . čĊ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat čĊ Ġ* čĊ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 čĊ Ġ* čĊ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware čĊ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , čĊ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . čĊ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand čĊ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . čĊ Ġ*/ č Ċ package Ġcom . e ason . utils čĊč Ċ import Ġandroid . content . Context č Ċ import Ġandroid . content . SharedPreferences č Ċ import Ġandroid . os . Environment č Ċ import Ġandroid . util . Base 6 4 č Ċ import Ġjava . io .* čĊč Ċ /** čĊ Ġ* Ġ================================= =============== čĊ Ġ* Ġ å¤ĦçĲĨ æķ°æį® æĪĸ æľ¬åľ° æĸĩä»¶çļĦ å·¥åħ· ç±» čĊ Ġ* čĊ Ġ* čĊ Ġ* ĠCreated Ġby ĠJ ess Y an Ġon Ġ 2 0 1 6 / 3 / 1 5 čĊ Ġ* Ġ[ Contact Ġme ]( mailto : j ess . yan . eff ort @ gmail . com ) čĊ Ġ* Ġ[ Follow Ġme ]( https :// github . com / J ess Y an Coding ) čĊ Ġ* Ġ================================= =============== čĊ Ġ*/ č Ċ class ĠData Helper Ġprivate Ġconstructor () Ġ{ čĊčĊčĊĠĠĠ Ġinit Ġ{ čĊĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" you Ġcan 't Ġinstantiate Ġme !") čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġcompanion Ġobject Ġ{ čĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġm SharedPreferences : ĠSharedPreferences ? Ġ= Ġnull čĊĠĠĠĠĠĠĠ Ġval ĠSP _ NAME Ġ= Ġ" config " čĊčĊĠĠĠĠĠĠĠ Ġ/** čĊĠĠĠĠĠĠĠĠ Ġ* Ġ åŃĺåĤ¨ éĩįè¦ģ ä¿¡æģ¯ åĪ° shared Preferences ï¼Ľ čĊĠĠĠĠĠĠĠĠ Ġ* čĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġkey čĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalue čĊĠĠĠĠĠĠĠĠ Ġ*/ čĊĠĠĠĠĠĠĠ Ġfun Ġset String SF ( context : ĠContext , Ġkey : ĠString , Ġvalue : ĠString ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m SharedPreferences Ġ== Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm SharedPreferences Ġ= Ġcontext . get SharedPreferences ( SP _ NAME , ĠContext . MODE _ PRIVATE ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġm SharedPreferences !!. edit (). putString ( key , Ġvalue ). apply () čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġ/** čĊĠĠĠĠĠĠĠĠ Ġ* Ġè¿ĶåĽŀ åŃĺåľ¨ shared Preferences çļĦä¿¡æģ¯ čĊĠĠĠĠĠĠĠĠ Ġ* čĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġkey čĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return čĊĠĠĠĠĠĠĠĠ Ġ*/ čĊĠĠĠĠĠĠĠ Ġfun ĠgetString SF ( context : ĠContext , Ġkey : ĠString ): ĠString ? Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m SharedPreferences Ġ== Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm SharedPreferences Ġ= Ġcontext . get SharedPreferences ( SP _ NAME , ĠContext . MODE _ PRIVATE ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġm SharedPreferences !!. getString ( key , Ġnull ) čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġ/** čĊĠĠĠĠĠĠĠĠ Ġ* Ġ åŃĺåĤ¨ éĩįè¦ģ ä¿¡æģ¯ åĪ° shared Preferences ï¼Ľ čĊĠĠĠĠĠĠĠĠ Ġ* čĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġkey čĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalue čĊĠĠĠĠĠĠĠĠ Ġ*/ čĊĠĠĠĠĠĠĠ Ġfun Ġset Inter ger SF ( context : ĠContext , Ġkey : ĠString , Ġvalue : ĠInt ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m SharedPreferences Ġ== Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm SharedPreferences Ġ= Ġcontext . get SharedPreferences ( SP _ NAME , ĠContext . MODE _ PRIVATE ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġm SharedPreferences !!. edit (). put Int ( key , Ġvalue ). apply () čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġ/** čĊĠĠĠĠĠĠĠĠ Ġ* Ġè¿ĶåĽŀ åŃĺåľ¨ shared Preferences çļĦä¿¡æģ¯ čĊĠĠĠĠĠĠĠĠ Ġ* čĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġkey čĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return čĊĠĠĠĠĠĠĠĠ Ġ*/ čĊĠĠĠĠĠĠĠ Ġfun Ġget Inter ger SF ( context : ĠContext , Ġkey : ĠString ): ĠInt Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m SharedPreferences Ġ== Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm SharedPreferences Ġ= Ġcontext . get SharedPreferences ( SP _ NAME , ĠContext . MODE _ PRIVATE ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġm SharedPreferences !!. getInt ( key , Ġ- 1 ) čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġ/** čĊĠĠĠĠĠĠĠĠ Ġ* Ġæ¸ ħ éĻ¤ æŁĲä¸ª åĨħå®¹ čĊĠĠĠĠĠĠĠĠ Ġ*/ čĊĠĠĠĠĠĠĠ Ġfun Ġremove SF ( context : ĠContext , Ġkey : ĠString ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m SharedPreferences Ġ== Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm SharedPreferences Ġ= Ġcontext . get SharedPreferences ( SP _ NAME , ĠContext . MODE _ PRIVATE ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġm SharedPreferences !!. edit (). remove ( key ). apply () čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġ/** čĊĠĠĠĠĠĠĠĠ Ġ* Ġæ¸ ħ éĻ¤ Share pref rence čĊĠĠĠĠĠĠĠĠ Ġ*/ čĊĠĠĠĠĠĠĠ Ġfun Ġclear Share pref rence ( context : ĠContext ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m SharedPreferences Ġ== Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm SharedPreferences Ġ= Ġcontext . get SharedPreferences ( SP _ NAME , ĠContext . MODE _ PRIVATE ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġm SharedPreferences !!. edit (). clear (). apply () čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġ/** čĊĠĠĠĠĠĠĠĠ Ġ* Ġå°Ĩ å¯¹è±¡ åĤ¨ åŃĺ åĪ° share preference čĊĠĠĠĠĠĠĠĠ Ġ* čĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġkey čĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġdevice čĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġ< T > čĊĠĠĠĠĠĠĠ Ġ</ T > Ġ*/ čĊĠĠĠĠĠĠĠ Ġfun Ġ< T > Ġsave Device Data ( context : ĠContext , Ġkey : ĠString , Ġdevice : ĠT ): ĠBoolean Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m SharedPreferences Ġ== Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm SharedPreferences Ġ= Ġcontext . get SharedPreferences ( SP _ NAME , ĠContext . MODE _ PRIVATE ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġba os Ġ= ĠByteArrayOutputStream () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĠĠ Ġ// Device ä¸º èĩªå®ļä¹ī ç±» čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠåĪĽå»º å¯¹è±¡ è¾ĵåĩº æµģ ï¼Į å¹¶ å°ģè£ħ åŃĹèĬĤ æµģ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġo os Ġ= ĠObject OutputStream ( ba os ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġå°Ĩ å¯¹è±¡ åĨĻåħ¥ åŃĹèĬĤ æµģ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo os . write Object ( device ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġå°Ĩ åŃĹèĬĤ æµģ ç¼ĸçłģ æĪĲ base 6 4 çļĦ åŃĹç¬¦ä¸² čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġo Auth _ Base 6 4 Ġ= ĠString ( Base 6 4 . encode ( ba os čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toByteArray (), ĠBase 6 4 . DEFAULT )) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm SharedPreferences !!. edit (). putString ( key , Ġo Auth _ Base 6 4 ). apply () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġ/** čĊĠĠĠĠĠĠĠĠ Ġ* Ġå°Ĩ å¯¹è±¡ ä»İ share pr er ence ä¸Ń åıĸ åĩºæĿ¥ čĊĠĠĠĠĠĠĠĠ Ġ* čĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġkey čĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġ< T > čĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return čĊĠĠĠĠĠĠĠ Ġ</ T > Ġ*/ čĊĠĠĠĠĠĠĠ Ġfun Ġ< T > Ġget Device Data ( context : ĠContext , Ġkey : ĠString ): ĠT ? Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m SharedPreferences Ġ== Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm SharedPreferences Ġ= Ġcontext . get SharedPreferences ( SP _ NAME , ĠContext . MODE _ PRIVATE ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdevice : ĠT ? Ġ= Ġnull čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproduct Base 6 4 Ġ= Ġm SharedPreferences !!. getString ( key , Ġnull ) Ġ?: Ġreturn Ġnull čĊč Ċ // Ġ è¯»åıĸ åŃĹèĬĤ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbase 6 4 Ġ= ĠBase 6 4 . decode ( product Base 6 4 . toByteArray (), ĠBase 6 4 . DEFAULT ) čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ å°ģè£ħ åĪ° åŃĹèĬĤ æµģ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb ais Ġ= ĠByteArrayInputStream ( base 6 4 ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åĨį æ¬¡ å°ģè£ħ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbis Ġ= ĠObject InputStream ( ba is ) čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ è¯»åıĸ å¯¹è±¡ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdevice Ġ= Ġbis . read Object () Ġas ĠT čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO ĠAuto - generated Ġcatch Ġblock čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdevice čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġ/** čĊĠĠĠĠĠĠĠĠ Ġ* Ġè¿ĶåĽŀ ç¼ĵåŃĺ æĸĩä»¶å¤¹ čĊĠĠĠĠĠĠĠĠ Ġ*/ čĊĠĠĠĠĠĠĠ Ġfun Ġget Cache File ( context : ĠContext ): ĠFile Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Environment . get External Storage State () Ġ== ĠEnvironment . MEDIA _ MOUNT ED ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġfile : ĠFile ? Ġ= Ġnull čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Ġ= Ġcontext . external Cache Dir // èİ·åıĸ ç³»ç»Ł ç®¡çĲĨ çļĦ sd åį¡ ç¼ĵåŃĺ æĸĩä»¶ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( file Ġ== Ġnull ) Ġ{// å¦Ĥæŀľ èİ·åıĸ çļĦæĸĩä»¶ ä¸ºç©º , å°± ä½¿çĶ¨ èĩªå·± å®ļä¹ī çļĦ ç¼ĵåŃĺ æĸĩä»¶å¤¹ åģļ ç¼ĵåŃĺ è·¯å¾Ħ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Ġ= ĠFile ( getCache FilePath ( context )) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmake Dirs ( file ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfile čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcontext . cacheDir čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġ/** čĊĠĠĠĠĠĠĠĠ Ġ* Ġèİ·åıĸ èĩªå®ļä¹ī ç¼ĵåŃĺ æĸĩä»¶ åľ°åĿĢ čĊĠĠĠĠĠĠĠĠ Ġ* čĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcontext čĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return čĊĠĠĠĠĠĠĠĠ Ġ*/ čĊĠĠĠĠĠĠĠ Ġfun Ġget Cache FilePath ( context : ĠContext ): ĠString Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠpackageName Ġ= Ġcontext . packageName čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"/ mnt / sd card /" Ġ+ ĠpackageName čĊĠĠĠĠĠĠĠ Ġ} čĊčĊčĊĠĠĠĠĠĠĠ Ġ/** čĊĠĠĠĠĠĠĠĠ Ġ* ĠåĪĽå»º æľª åŃĺåľ¨ çļĦæĸĩä»¶ å¤¹ čĊĠĠĠĠĠĠĠĠ Ġ* čĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġfile čĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return čĊĠĠĠĠĠĠĠĠ Ġ*/ čĊĠĠĠĠĠĠĠ Ġfun Ġmake Dirs ( file : ĠFile ): ĠFile Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! file . exists ()) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile . mkdir s () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfile čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġ/** čĊĠĠĠĠĠĠĠĠ Ġ* Ġä½¿çĶ¨ éĢĴ å½Ĵ èİ·åıĸ çĽ®å½ķ æĸĩä»¶ å¤§å°ı čĊĠĠĠĠĠĠĠĠ Ġ* čĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġdir čĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return čĊĠĠĠĠĠĠĠĠ Ġ*/ čĊĠĠĠĠĠĠĠ Ġfun Ġget Dir Size ( dir : ĠFile ?): ĠLong Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dir Ġ== Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 0 čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! dir . isDirectory ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 0 čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdir Size : ĠLong Ġ= Ġ 0 čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfiles Ġ= Ġdir . list Files () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( file Ġin Ġfiles ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( file . isFile ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdir Size Ġ+= Ġfile . length () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( file . isDirectory ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdir Size Ġ+= Ġfile . length () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdir Size Ġ+= Ġget Dir Size ( file ) Ġ// Ġ éĢĴ å½Ĵ è°ĥçĶ¨ ç»§ç»Ń ç»Łè®¡ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdir Size čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġ/** čĊĠĠĠĠĠĠĠĠ Ġ* Ġä½¿çĶ¨ éĢĴ å½Ĵ åĪłéĻ¤ æĸĩä»¶å¤¹ čĊĠĠĠĠĠĠĠĠ Ġ* čĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġdir čĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return čĊĠĠĠĠĠĠĠĠ Ġ*/ čĊĠĠĠĠĠĠĠ Ġfun Ġdelete Dir ( dir : ĠFile ?): ĠBoolean Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dir Ġ== Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! dir . isDirectory ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfiles Ġ= Ġdir . list Files () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( file Ġin Ġfiles ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( file . isFile ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile . delete () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( file . isDirectory ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelete Dir ( file ) Ġ// Ġ éĢĴ å½Ĵ è°ĥçĶ¨ ç»§ç»Ń åĪłéĻ¤ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue čĊĠĠĠĠĠĠĠ Ġ} čĊčĊčĊĠĠĠĠĠĠĠ Ġ@ Throws ( IOException :: class ) čĊĠĠĠĠĠĠĠ Ġfun Ġby ty ToString ( inputStream : ĠInputStream ): ĠString Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġout Ġ= ĠByteArrayOutputStream () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuf Ġ= ĠByteArray ( 1 0 2 4 ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( inputStream . read ( buf ) Ġ!= Ġ- 1 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout . write ( buf , Ġ 0 , Ġbuf . size ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġout . toString () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġout . close () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊč Ċ } čĊ