/** Ċ Ġ* ĠCopyright Ġ( c ) ĠC arm ine ĠDi M asc io Ġ 2 0 1 7 Ġ- Ġ 2 0 1 9 Ċ Ġ* ĠLicense : ĠMIT Ċ Ġ*/ Ċ package Ġio . github . cd im asc io . dotenv . internal Ċ Ċ import Ġio . github . cd im asc io . dotenv . Dot Env Exception Ċ import Ġjava . net . URI Ċ import Ġjava . nio . file . FileSystem s Ċ import Ġjava . nio . file . Files Ċ import Ġjava . nio . file . Paths Ċ import Ġjava . util . stream . Stream Ċ Ċ internal Ġclass ĠDot env Reader ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġdirectory : ĠString , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġfilename : ĠString Ċ ) Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReads Ġthe Ġcontents Ġof Ġthe Ġ. env Ġfile ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġread (): ĠStream < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdir Ġ= Ġdirectory . replace (""" \\ """. to Regex (), Ġ"/ "). remove Suffix (". env "). remove Suffix ("/") ĊĊĠĠĠĠĠĠĠ Ġval Ġlocation Ġ= Ġ"$ dir /$ filename " ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġif Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation . startsWith (" file :", Ġignore Case Ġ= Ġtrue ) Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation . startsWith (" android . resource :", Ġignore Case Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPaths . get ( URI . create ( location )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPaths . get ( location ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( Files . exists ( path )) ĠFiles . lines ( path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClass path Helper . load File From Classpath ( location . replace First ("./ ", Ġ"/ ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠDot Env Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcwd Ġ= ĠFileSystem s . getDefault (). getPath (". "). to AbsolutePath (). normalize () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcwd Message Ġ= Ġif Ġ(! path . is Absolute ) Ġ"( working Ġdirectory : Ġ$ cwd )" Ġelse Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . add Sup pressed ( Dot Env Exception (" Could Ġnot Ġfind Ġ$ path Ġon Ġthe Ġfile Ġsystem Ġ$ cwd Message ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġe ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ