package Ġcom . code e . app . core . plugins . files Ċ Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġjava . io . File Ċ import Ġcom . code e . app . plugins . api . files . File Storage Element Ġas ĠI File Storage Element Ċ Ċ class ĠFile Storage Element Ġinternal Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġorigin : ĠFile , ĊĠĠĠ Ġprivate Ġval Ġroot Directory : ĠFile Ċ ) Ġ: ĠI File Storage Element Ġ{ ĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġread (): ĠByteArray Ġ= Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn @ with Context Ġorigin . read Bytes () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġwrite ( bytes : ĠByteArray ) Ġ= Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġorigin . write Bytes ( bytes ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġdelete (): ĠEmpty Storage Element Ġ= Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġorigin . delete () ĊĠĠĠĠĠĠĠ Ġreturn @ with Context ĠEmpty Storage Element ( origin , Ġroot Directory ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġname : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġorigin . name ĊĊĠĠĠ Ġoverride Ġval Ġpath : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġorigin . path . replace ( root Directory . path , Ġ"") Ċ }