/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠO liver ĠB erg Ċ Ġ* Ċ Ġ* Ġ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 Ġk ra utils . io Ċ Ċ import Ġk ra utils . K ra utils Experimental Ċ import Ġk ra utils . io . App Dirs . Default . instance Ċ import Ġk ra utils . system . Jvm Properties Ċ import Ġk ra utils . system . Jvm Properties . user Home Ċ import Ġk ra utils . system . get Env Ċ import Ġjava . nio . file . Path Ċ import Ġkotlin . io . path . Path Ċ import Ġkotlin . io . path . create Directories Ċ import Ġkotlin . io . path . not Exists Ċ import Ġkotlin . io . path . use Lines Ċ Ċ // Ġinspired Ġby Ġhttps :// github . com / har aw ata / app dirs Ġand Ġhttps :// github . com / er ay erd in / k app dirs Ċ Ċ // ĠTODO : Ġdocumentation Ċ @ K ra utils Experimental Ċ public Ġsealed Ġclass ĠApp Dirs Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġ[ App Dirs ] Ġimplementation Ġthat Ġdeleg ates Ġto Ġ[ Mac Os X ], Ġ[ Unix ] Ġor Ġ[ Windows ] Ġdepending Ġon Ġthe Ġcurrent ĊĠĠĠĠ Ġ* Ġ[ os Name ][ Jvm Properties . os Name ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ K ra utils Experimental ĊĠĠĠ Ġpublic Ġcompanion Ġobject ĠDefault Ġ: ĠApp Dirs () Ġ{ ĊĠĠĠĠĠĠĠ Ġinternal Ġval Ġinstance : ĠApp Dirs Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġos Ġ= ĠJ vm Properties . os Name . lowercase () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġos . startsWith (" windows ") Ġ-> ĠWindows ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġos . startsWith (" mac Ġos Ġx ") Ġ-> ĠMac Os X ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġassume Ġit 's Ġsome Ġ* nix Ġbased Ġsystem ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠUnix ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Downloads Directory (): ĠPath Ġ= Ġinstance . get Downloads Directory () ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Desktop Directory (): ĠPath Ġ= Ġinstance . get Desktop Directory () ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Documents Directory (): ĠPath Ġ= Ġinstance . get Documents Directory () ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Music Directory (): ĠPath Ġ= Ġinstance . get Music Directory () ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget P ictures Directory (): ĠPath Ġ= Ġinstance . getP ictures Directory () ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Videos Directory (): ĠPath Ġ= Ġinstance . get Videos Directory () ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget UserData Directory ( ro aming : ĠBoolean ): ĠPath Ġ= Ġinstance . getUser Data Directory ( ro aming ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetUser Config Directory ( ro aming : ĠBoolean ): ĠPath Ġ= Ġinstance . getUser Config Directory ( ro aming ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetUser Cache Directory (): ĠPath Ġ= Ġinstance . getUser Cache Directory () ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetUser Log Directory (): ĠPath Ġ= Ġinstance . getUser Log Directory () ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Site Data Directory ( local : ĠBoolean ): ĠPath Ġ= Ġinstance . get Site Data Directory ( local ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Site Config Directory (): ĠPath Ġ= Ġinstance . get Site Config Directory () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġdownloads Ġdirectory Ġof Ġthe Ġcurrent Ġuser . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ K ra utils Experimental ĊĠĠĠ Ġpublic Ġabstract Ġfun Ġget Downloads Directory (): ĠPath ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġdesktop Ġdirectory Ġof Ġthe Ġcurrent Ġuser . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ K ra utils Experimental ĊĠĠĠ Ġpublic Ġabstract Ġfun Ġget Desktop Directory (): ĠPath ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġdocuments Ġdirectory Ġof Ġthe Ġcurrent Ġuser . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ K ra utils Experimental ĊĠĠĠ Ġpublic Ġabstract Ġfun Ġget Documents Directory (): ĠPath ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġmusic Ġdirectory Ġof Ġthe Ġcurrent Ġuser . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ K ra utils Experimental ĊĠĠĠ Ġpublic Ġabstract Ġfun Ġget Music Directory (): ĠPath ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġpictures Ġdirectory Ġof Ġthe Ġcurrent Ġuser . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ K ra utils Experimental ĊĠĠĠ Ġpublic Ġabstract Ġfun Ġget P ictures Directory (): ĠPath ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġvideos Ġdirectory Ġof Ġthe Ġcurrent Ġuser . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ K ra utils Experimental ĊĠĠĠ Ġpublic Ġabstract Ġfun Ġget Videos Directory (): ĠPath ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġuser Ġdata Ġdirectory Ġof Ġthe Ġoperating Ġsystem . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġ[ ro aming ] Ġwhether Ġor Ġnot Ġthe Ġdirectory Ġshould Ġbe Ġcreated Ġin Ġthe Ġ` ro aming ` Ġdirectory Ġ*( only Ġused ĊĠĠĠĠ Ġ* Ġon ĠWindows Ġsystems )* ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ K ra utils Experimental ĊĠĠĠ Ġpublic Ġabstract Ġfun Ġget UserData Directory ( ro aming : ĠBoolean ): ĠPath ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġuser Ġconfig Ġdirectory Ġof Ġthe Ġoperating Ġsystem . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġ[ ro aming ] Ġwhether Ġor Ġnot Ġthe Ġdirectory Ġshould Ġbe Ġcreated Ġin Ġthe Ġ` ro aming ` Ġdirectory Ġ*( only Ġused ĊĠĠĠĠ Ġ* Ġon ĠWindows Ġsystems )* ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ K ra utils Experimental ĊĠĠĠ Ġpublic Ġabstract Ġfun ĠgetUser Config Directory ( ro aming : ĠBoolean ): ĠPath ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġuser Ġcache Ġdirectory Ġof Ġthe Ġoperating Ġsystem . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ K ra utils Experimental ĊĠĠĠ Ġpublic Ġabstract Ġfun ĠgetUser Cache Directory (): ĠPath ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġuser Ġlog Ġdirectory Ġof Ġthe Ġoperating Ġsystem . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ K ra utils Experimental ĊĠĠĠ Ġpublic Ġabstract Ġfun ĠgetUser Log Directory (): ĠPath ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġsite Ġdata Ġdirectory Ġof Ġthe Ġoperating Ġsystem . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ K ra utils Experimental ĊĠĠĠ Ġpublic Ġabstract Ġfun Ġget Site Data Directory ( local : ĠBoolean ): ĠPath ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġsite Ġconfig Ġdirectory Ġof Ġthe Ġoperating Ġsystem . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ K ra utils Experimental ĊĠĠĠ Ġpublic Ġabstract Ġfun Ġget Site Config Directory (): ĠPath ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠImplementation Ġfor ĠMac Os X Ġsystems . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ K ra utils Experimental ĊĠĠĠ Ġpublic Ġobject ĠMac Os X Ġ: ĠApp Dirs () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġaccording Ġto Ġthis ĠSO Ġanswer Ġhttps :// stackoverflow . com / questions / 5 6 7 8 7 4 / how - do - i - find - the - users - documents - folder - with - java - in - os - x # comment 3 7 9 5 6 6 _ 5 6 7 9 0 2 ĊĠĠĠĠĠĠĠ Ġ// Ġthe Ġlocalization Ġshould Ġonly Ġbe Ġfor Ġdisplaying Ġit , Ġand Ġdoesn 't Ġactually Ġchange Ġthe Ġ" physical " Ġfiles Ġname ĊĠĠĠĠĠĠĠ Ġ// Ġso Ġthis Ġcode Ġshould Ġwork , Ġhowever , Ġthe Ġapple Ġpage Ġhe Ġlinks Ġto Ġdoesn 't Ġexist Ġanymore , Ġso ĠI 'm Ġnot Ġ 1 0 0 % Ġcertain ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Downloads Directory (): ĠPath Ġ= ĠPath ( user Home , Ġ" Downloads ") ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Desktop Directory (): ĠPath Ġ= ĠPath ( user Home , Ġ" Desktop ") ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Documents Directory (): ĠPath Ġ= ĠPath ( user Home , Ġ" Documents ") ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Music Directory (): ĠPath Ġ= ĠPath ( user Home , Ġ" Music ") ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget P ictures Directory (): ĠPath Ġ= ĠPath ( user Home , Ġ" P ictures ") ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Videos Directory (): ĠPath Ġ= ĠPath ( user Home , Ġ" Videos ") ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget UserData Directory ( ro aming : ĠBoolean ): ĠPath Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPath ( user Home , Ġ" Library ", Ġ" Application ĠSupport ") ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetUser Config Directory ( ro aming : ĠBoolean ): ĠPath Ġ= Ġget UserData Directory ( ro aming ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetUser Cache Directory (): ĠPath Ġ= ĠPath ( user Home , Ġ" Library ", Ġ" Caches ") ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetUser Log Directory (): ĠPath Ġ= ĠPath ( user Home , Ġ" Library ", Ġ" Logs ") ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Site Data Directory ( local : ĠBoolean ): ĠPath Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPath ("/", Ġ" Library ", Ġ" Application ĠSupport ") ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Site Config Directory (): ĠPath Ġ= Ġget Site Data Directory ( false ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠImplementation Ġfor Ġ* nix Ġbased Ġsystems . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ K ra utils Experimental ĊĠĠĠ Ġpublic Ġobject ĠUnix Ġ: ĠApp Dirs () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Downloads Directory (): ĠPath Ġ= ĠX dg User Dirs . X DG _ DOWNLOAD _ DIR . path ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Desktop Directory (): ĠPath Ġ= ĠX dg User Dirs . X DG _ DE SK TOP _ DIR . path ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Documents Directory (): ĠPath Ġ= ĠX dg User Dirs . X DG _ DOCUMENT S _ DIR . path ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Music Directory (): ĠPath Ġ= ĠX dg User Dirs . X DG _ M US IC _ DIR . path ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget P ictures Directory (): ĠPath Ġ= ĠX dg User Dirs . X DG _ PI CTURE S _ DIR . path ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Videos Directory (): ĠPath Ġ= ĠX dg User Dirs . X DG _ VID EOS _ DIR . path ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget UserData Directory ( ro aming : ĠBoolean ): ĠPath Ġ= ĠPath ( user Home , Ġ". local ", Ġ" share ") ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetUser Config Directory ( ro aming : ĠBoolean ): ĠPath Ġ= ĠPath ( user Home , Ġ". config ") ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetUser Cache Directory (): ĠPath Ġ= ĠPath ( user Home , Ġ". cache ") ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetUser Log Directory (): ĠPath Ġ= ĠPath ( user Home , Ġ". cache ", Ġ" logs ") ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Site Data Directory ( local : ĠBoolean ): ĠPath Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocal Ġ-> ĠPath ("/", Ġ" usr ", Ġ" local ", Ġ" share ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠPath ("/", Ġ" usr ", Ġ" share ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Site Config Directory (): ĠPath Ġ= ĠPath ("/", Ġ" etc ") ĊĊĠĠĠĠĠĠĠ Ġ// Ġbased Ġon Ġhttps :// github . com / er ay erd in / k app dirs / blob / master / src / main / kotlin / io / github / er ay erd in / k app dirs / app dirs / Unix App Dirs . kt # L 7 9 ĊĠĠĠĠĠĠĠ Ġ// Ġthe Ġfunctionality Ġis Ġthe Ġsame , Ġit 's Ġjust Ġbeen Ġmade Ġmore Ġ" idi om atic " ĊĠĠĠĠĠĠĠ Ġprivate Ġenum Ġclass ĠX dg User Dirs ( default Path : ĠPath ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠX DG _ DOWNLOAD _ DIR ( Path ( user Home , Ġ" Downloads ")), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠX DG _ DE SK TOP _ DIR ( Path ( user Home , Ġ" Desktop ")), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠX DG _ DOCUMENT S _ DIR ( Path ( user Home , Ġ" Documents ")), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠX DG _ M US IC _ DIR ( Path ( user Home , Ġ" Music ")), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠX DG _ PI CTURE S _ DIR ( Path ( user Home , Ġ" P ictures ")), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠX DG _ VID EOS _ DIR ( Path ( user Home , Ġ" Videos ")); ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Dir Config : ĠPath Ġby Ġlazy Ġ{ ĠPath ( user Home , Ġ". config ", Ġ" user - dirs . dirs ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath : ĠPath Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ lazy Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Dir Config . not Exists () Ġ-> Ġdefault Path ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġuser Dir Config . use Lines Ġ{ Ġlines Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlines . map ( String :: trim ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . startsWith ( name ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map ( this :: parse Path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. last OrNull () Ġ?: Ġdefault Path ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġfun Ġparse Path ( text : ĠString ): ĠPath Ġ= Ġtext . split (' = ')[ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. drop ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. drop Last ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. split To Sequence ( Jvm Properties . file Separator ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Mutable List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ Ġit . remove ("\ $ HOME ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fold ( Path ( user Home )) Ġ{ Ġparent , Ġpath Ġ-> Ġparent . resolve ( path ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠImplementation Ġfor ĠWindows Ġsystems . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ K ra utils Experimental ĊĠĠĠ Ġpublic Ġobject ĠWindows Ġ: ĠApp Dirs () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġlazy Ġso Ġthat Ġwe Ġdon 't Ġencounter Ġany Ġexceptions Ġwhen Ġthis Ġinstance Ġis Ġcreated ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġapp Data Ġby Ġlazy Ġ{ Ġget Env (" APP DATA ") Ġ} ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlocal AppData Ġby Ġlazy Ġ{ Ġget Env (" LOCAL APP DATA ") Ġ} ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġprogram Data Ġby Ġlazy Ġ{ Ġget Env (" PROGRAM DATA ") Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Downloads Directory (): ĠPath Ġ= ĠPath ( user Home , Ġ" Downloads ") ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Desktop Directory (): ĠPath Ġ= ĠPath ( user Home , Ġ" Desktop ") ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Documents Directory (): ĠPath Ġ= ĠPath ( user Home , Ġ" My ĠDocuments ") ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Music Directory (): ĠPath Ġ= ĠPath ( user Home , Ġ" My ĠMusic ") ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget P ictures Directory (): ĠPath Ġ= ĠPath ( user Home , Ġ" My ĠP ictures ") ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Videos Directory (): ĠPath Ġ= ĠPath ( user Home , Ġ" My ĠV ideos ") ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget UserData Directory ( ro aming : ĠBoolean ): ĠPath Ġ= ĠPath ( if Ġ( ro aming ) Ġapp Data Ġelse Ġlocal AppData ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetUser Config Directory ( ro aming : ĠBoolean ): ĠPath Ġ= Ġget UserData Directory ( ro aming ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetUser Cache Directory (): ĠPath Ġ= ĠPath ( local AppData ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetUser Log Directory (): ĠPath Ġ= ĠPath ( local AppData ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Site Data Directory ( local : ĠBoolean ): ĠPath Ġ= ĠPath ( program Data ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Site Config Directory (): ĠPath Ġ= Ġget Site Data Directory ( false ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ // ĠTODO : Ġdocumentation Ċ Ċ @ K ra utils Experimental Ċ public Ġfun ĠApp Dirs . create Downloads Directory ( name : ĠString ): ĠPath Ġ= ĊĠĠĠ Ġget Downloads Directory (). resolve ( name ). create Directories () Ċ Ċ @ K ra utils Experimental Ċ public Ġfun ĠApp Dirs . create Desktop Directory ( name : ĠString ): ĠPath Ġ= ĊĠĠĠ Ġget Desktop Directory (). resolve ( name ). create Directories () Ċ Ċ @ K ra utils Experimental Ċ public Ġfun ĠApp Dirs . create Documents Directory ( name : ĠString ): ĠPath Ġ= ĊĠĠĠ Ġget Documents Directory (). resolve ( name ). create Directories () Ċ Ċ @ K ra utils Experimental Ċ public Ġfun ĠApp Dirs . create P ictures Directory ( name : ĠString ): ĠPath Ġ= ĊĠĠĠ Ġget P ictures Directory (). resolve ( name ). create Directories () Ċ Ċ @ K ra utils Experimental Ċ public Ġfun ĠApp Dirs . create Videos Directory ( name : ĠString ): ĠPath Ġ= ĊĠĠĠ Ġget Videos Directory (). resolve ( name ). create Directories () Ċ Ċ @ K ra utils Experimental Ċ public Ġfun ĠApp Dirs . create UserData Directory ( name : ĠString , Ġro aming : ĠBoolean ): ĠPath Ġ= ĊĠĠĠ Ġget UserData Directory ( ro aming ). resolve ( name ). create Directories () Ċ Ċ @ K ra utils Experimental Ċ public Ġfun ĠApp Dirs . createUser Config Directory ( name : ĠString , Ġro aming : ĠBoolean ): ĠPath Ġ= ĊĠĠĠ ĠgetUser Config Directory ( ro aming ). resolve ( name ). create Directories () Ċ Ċ @ K ra utils Experimental Ċ public Ġfun ĠApp Dirs . createUser Cache Directory ( name : ĠString ): ĠPath Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠ Ġis ĠApp Dirs . Default Ġ-> Ġinstance . createUser Cache Directory ( name ) ĊĠĠĠ ĠApp Dirs . Mac Os X , ĠApp Dirs . Unix Ġ-> ĠgetUser Cache Directory (). resolve ( name ). create Directories () ĊĠĠĠ ĠApp Dirs . Windows Ġ-> ĠgetUser Cache Directory (). resolve ( name ). resolve (" Cache "). create Directories () Ċ } Ċ Ċ @ K ra utils Experimental Ċ public Ġfun ĠApp Dirs . createUser Log Directory ( name : ĠString ): ĠPath Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠ Ġis ĠApp Dirs . Default Ġ-> Ġinstance . createUser Log Directory ( name ) ĊĠĠĠ ĠApp Dirs . Mac Os X , ĠApp Dirs . Unix Ġ-> ĠgetUser Log Directory (). resolve ( name ). create Directories () ĊĠĠĠ ĠApp Dirs . Windows Ġ-> ĠgetUser Log Directory (). resolve ( name ). resolve (" Logs "). create Directories () Ċ } Ċ Ċ @ K ra utils Experimental Ċ public Ġfun ĠApp Dirs . create Site Data Directory ( name : ĠString , Ġlocal : ĠBoolean ): ĠPath Ġ= ĊĠĠĠ Ġget Site Data Directory ( local ). resolve ( name ). create Directories () Ċ Ċ @ K ra utils Experimental Ċ public Ġfun ĠApp Dirs . create Site Config Directory ( name : ĠString ): ĠPath Ġ= ĊĠĠĠ Ġget Site Config Directory (). resolve ( name ). create Directories ()