package Ġcom . dan ik ula . vide oc ache kt Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Environment Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġjava . io . File Ċ import Ġjava . lang . NullPointerException Ċ Ċ /** Ċ Ġ* ĠProvides Ġapplication Ġstorage Ġpaths Ċ Ġ* Ċ Ġ* Ċ Ġ* ĠSee Ġhttps :// github . com / no stra 1 3 / Android - Universal - Image - Loader Ċ Ġ* Ċ Ġ* Ġ@ author ĠSer ge y ĠTar ase v ich Ġ( no stra 1 3 @ gmail . com ) Ċ Ġ* Ġ@ since Ġ 1 . 0 . 0 Ċ Ġ*/ Ċ internal Ġobject ĠStorage Utils Ġ{ ĊĠĠĠ Ġprivate Ġval ĠLOG Ġ= ĠLoggerFactory . getLogger (" Storage Utils ") ĊĠĠĠ Ġprivate Ġconst Ġval ĠIN DI VID UAL _ DIR _ NAME Ġ= Ġ" video - cache " ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġindividual Ġapplication Ġcache Ġdirectory Ġ( for Ġonly Ġvideo Ġcaching Ġfrom ĠProxy ). ĠCache Ġdirectory Ġwill Ġbe ĊĠĠĠĠ Ġ* Ġcreated Ġon ĠSD Ġcard Ġ* ("/ Android / data /[ app _ package _ name ]/ cache / video - cache ") * Ġif Ġcard Ġis Ġmounted Ġ. ĊĠĠĠĠ Ġ* ĠElse Ġ- ĠAndroid Ġdefines Ġcache Ġdirectory Ġon Ġdevice 's Ġfile Ġsystem . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠApplication Ġcontext ĊĠĠĠĠ Ġ* Ġ@ return ĠCache Ġ[ directory ][ File ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Individual Cache Directory ( context : ĠContext ): ĠFile Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcache Dir Ġ= Ġget Cache Directory ( context , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġreturn ĠFile ( cacheDir , ĠIN DI VID UAL _ DIR _ NAME ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġapplication Ġcache Ġdirectory . ĠCache Ġdirectory Ġwill Ġbe Ġcreated Ġon ĠSD Ġcard ĊĠĠĠĠ Ġ* Ġ* ("/ Android / data /[ app _ package _ name ]/ cache ") * Ġ( if Ġcard Ġis Ġmounted Ġand Ġapp Ġhas Ġappropriate Ġpermission ) Ġor ĊĠĠĠĠ Ġ* Ġon Ġdevice 's Ġfile Ġsystem Ġdepending Ġincoming Ġparameters . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠĠĠĠĠĠĠ ĠApplication Ġcontext ĊĠĠĠĠ Ġ* Ġ@ param Ġprefer External ĠWhether Ġprefer Ġexternal Ġlocation Ġfor Ġcache ĊĠĠĠĠ Ġ* Ġ@ return ĠCache Ġ[ directory ][ File ]. < br ></ br > ĊĠĠĠĠ Ġ* Ġ** NOTE :** ĠCan Ġbe Ġnull Ġin Ġsome Ġun predict able Ġcases Ġ( if ĠSD Ġcard Ġis Ġun mounted Ġand ĊĠĠĠĠ Ġ* Ġ[ Context . getCache Dir () ][ Context . getCache Dir ] Ġreturns Ġnull ). ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġget Cache Directory ( context : ĠContext , Ġprefer External : ĠBoolean ): ĠFile Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġapp Cache Dir : ĠFile ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġexternal Storage State : ĠString Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEnvironment . get External Storage State () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNullPointerException ) Ġ{ Ġ// Ġ( sh ) it Ġhappens ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( prefer External Ġ&& ĠEnvironment . MEDIA _ MOUNT ED Ġ== Ġexternal Storage State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Cache Dir Ġ= Ġget External Cache Dir ( context ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( app Cache Dir Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Cache Dir Ġ= Ġcontext . cacheDir ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( app Cache Dir Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcache DirPath Ġ= Ġ"/ data / data /" Ġ+ Ġcontext . packageName Ġ+ Ġ"/ cache /" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOG . warn (" Can 't Ġdefine Ġsystem Ġcache Ġdirectory ! Ġ'$ cache DirPath % s ' Ġwill Ġbe Ġused .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Cache Dir Ġ= ĠFile ( cache DirPath ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġapp Cache Dir ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget External Cache Dir ( context : ĠContext ): ĠFile ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Dir Ġ= ĠFile ( File ( Environment . get External Storage Directory (), Ġ" Android "), Ġ" data ") ĊĠĠĠĠĠĠĠ Ġval Ġapp Cache Dir Ġ= ĠFile ( File ( data Dir , Ġcontext . packageName ), Ġ" cache ") ĊĠĠĠĠĠĠĠ Ġif Ġ(! app Cache Dir . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! app Cache Dir . mkdir s ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLOG . warn (" Unable Ġto Ġcreate Ġexternal Ġcache Ġdirectory ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġapp Cache Dir ĊĠĠĠ Ġ} Ċ }