package Ġcom . team n ifty . receive _ file _ intent Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . database . Cursor Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Build Ċ import Ġandroid . provider . Documents Contract Ċ import Ġandroid . provider . Open able Columns Ċ import Ġandroid . webkit . MimeType Map Ċ import Ġio . flutter . plugin . common . Event Channel Ċ import Ġio . flutter . plugin . common . MethodCall Ċ import Ġio . flutter . plugin . common . Method Channel Ċ import Ġio . flutter . plugin . common . Method Channel . MethodCall Handler Ċ import Ġio . flutter . plugin . common . Method Channel . Result Ċ import Ġio . flutter . plugin . common . Plugin Registry Ċ import Ġio . flutter . plugin . common . Plugin Registry . Registrar Ċ import Ġjava . io .* Ċ import Ġjava . util .* ĊĊ Ċ class ĠReceive File Intent Plugin ( val Ġregist rar : ĠRegist rar ) Ġ: ĊĠĠĠĠĠĠĠ ĠMethod Call Handler , ĊĠĠĠĠĠĠĠ ĠEvent Channel . Stream Handler , ĊĠĠĠĠĠĠĠ ĠPlugin Registry . New Intent Listener Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġinitial Text : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġlatest Text : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġinitial File : ĠArrayList < String >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġlatest File : ĠArrayList < String >? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġevent Sink Text : ĠEvent Channel . Event Sink ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġevent Sink File : ĠEvent Channel . Event Sink ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġhandle Intent ( regist rar . context (), Ġregist rar . activity (). intent , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Listen ( arguments : ĠAny ?, Ġevents : ĠEvent Channel . Event Sink ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( arguments ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" text " Ġ-> Ġevent Sink Text Ġ= Ġevents ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" file " Ġ-> Ġevent Sink File Ġ= Ġevents ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cancel ( arguments : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( arguments ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" text " Ġ-> Ġevent Sink Text Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" file " Ġ-> Ġevent Sink File Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon New Intent ( intent : ĠIntent ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġhandle Intent ( regist rar . context (), Ġintent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠMESS AGES _ CHANNEL Ġ= Ġ" receive _ file _ intent / messages " ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠEVENT S _ CHANNEL _ TEXT Ġ= Ġ" receive _ file _ intent / events - text " ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠEVENT S _ CHANNEL _ FILE Ġ= Ġ" receive _ file _ intent / events - file " ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġregister With ( regist rar : ĠRegist rar ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDetect Ġif Ġwe 've Ġbeen Ġlaunched Ġin Ġbackground ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( regist rar . activity () Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinstance Ġ= ĠReceive File Intent Plugin ( regist rar ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Channel Ġ= ĠMethod Channel ( regist rar . messenger (), ĠMESS AGES _ CHANNEL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Channel . set MethodCall Handler ( instance ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġe Channel Text Ġ= ĠEvent Channel ( regist rar . messenger (), ĠEVENT S _ CHANNEL _ TEXT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe Channel Text . set Stream Handler ( instance ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġe Channel File Ġ= ĠEvent Channel ( regist rar . messenger (), ĠEVENT S _ CHANNEL _ FILE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe Channel File . set Stream Handler ( instance ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġregist rar . add New Intent Listener ( instance ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon MethodCall ( call : ĠMethod Call , Ġresult : ĠResult ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall . method Ġ== Ġ" get Initial Text " Ġ-> Ġresult . success ( initial Text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall . method Ġ== Ġ" get Initial File " Ġ-> Ġresult . success ( initial File ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall . method Ġ== Ġ" reset " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinitial Text Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlatest Text Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinitial File Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlatest File Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . success ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġresult . not Implemented () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Intent ( context : ĠContext , Ġintent : ĠIntent , Ġinitial : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( intent . type Ġ== Ġnull Ġ|| Ġintent . type ?. startsWith (" text ") Ġ== Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġintent . action Ġ== ĠIntent . ACTION _ SEND Ġ-> Ġ{ Ġ// ĠSh aring Ġtext ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġintent . getString Extra ( Intent . EXTRA _ TEXT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( initial ) Ġinitial Text Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlatest Text Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Sink Text ?. success ( latest Text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ Ġ// ĠFile ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= ĠgetFile U ris ( context , Ġintent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( initial ) Ġinitial File Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlatest File Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Sink File ?. success ( latest File ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetFile U ris ( context : ĠContext , Ġintent : ĠIntent ?): ĠArrayList < String >? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( intent Ġ== Ġnull ) Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . action Ġ== ĠIntent . ACTION _ SEND Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuri Ġ= Ġintent . get Parcelable Extra < Uri >( Intent . EXTRA _ STREAM ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Path Ġ= Ġprocess Uri ( context , Ġuri ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new Path Ġ!= Ġnull ) Ġarray ListOf ( new Path ) Ġelse Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . action Ġ== ĠIntent . ACTION _ SEND _ MULTIPLE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġur is Ġ= Ġintent . get Parcelable ArrayList Extra < Uri >( Intent . EXTRA _ STREAM ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġur is ?. map NotNull Ġ{ Ġprocess Uri ( context , Ġit ) Ġ} ?. toList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ!= Ġnull ) ĠArrayList ( value ) Ġelse Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġprocess Uri ( context : ĠContext , Ġuri : ĠUri ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtarget Ġ= Ġcontext . cacheDir . path ĊĠĠĠĠĠĠĠ Ġval Ġfilename Ġ= Ġget FileName ( uri , Ġcontext ) ĊĠĠĠĠĠĠĠ Ġval ĠhasError Ġ= Ġsave File ( context , Ġfilename , Ġuri , Ġtarget , Ġfilename ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtarget Ġ+ Ġ"/" Ġ+ Ġfilename ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget FileName ( uri : ĠUri , Ġcontext : ĠContext ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġif Ġ( uri . scheme Ġ== Ġ" content ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcursor : ĠCursor Ġ= Ġcontext . content Resolver . query ( uri , Ġnull , Ġnull , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cursor Ġ!= Ġnull Ġ&& Ġcursor . moveTo First ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġcursor . getString ( cursor . getColumnIndex ( Open able Columns . DISPLAY _ NAME )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( result Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġuri . path ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcut Ġ= Ġresult . lastIndexOf ('/') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cut Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġresult . substring ( cut Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Virtual File ( context : ĠContext , Ġuri : ĠUri ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . KIT K AT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! Documents Contract . is Document Uri ( context , Ġuri )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcursor : ĠCursor Ġ= Ġcontext . content Resolver . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuri , ĠarrayOf ( Documents Contract . Document . COLUMN _ FLAGS ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġflags Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cursor . moveTo First ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflags Ġ= Ġcursor . getInt ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflags Ġand ĠDocuments Contract . Document . FLAG _ VIRTUAL _ DOCUMENT Ġ!= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġprivate Ġfun Ġget InputStream For Virtual File ( context : ĠContext , Ġuri : ĠUri , ĠmimeType Filter : ĠString ?): ĠInputStream ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresolver Ġ= Ġcontext . content Resolver ĊĠĠĠĠĠĠĠ Ġval Ġopen able Mime Types Ġ= Ġresolver . get Stream Types ( uri , ĠmimeType Filter ) ĊĠĠĠĠĠĠĠ Ġif Ġ( open able Mime Types Ġ== Ġnull Ġ|| Ġopen able Mime Types . size Ġ< Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠFileNotFoundException () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresolver ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. open Typed Asset FileDescriptor ( uri , Ġopen able Mime Types [ 0 ], Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create InputStream () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget MimeType ( url : ĠString ?): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġtype : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġextension Ġ= ĠMime TypeMap . getFile Extension From Url ( url ) ĊĠĠĠĠĠĠĠ Ġif Ġ( extension Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠMime TypeMap . get Singleton (). get MimeType From Extension ( extension ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtype ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsave File ( context : ĠContext , Ġname : ĠString ?, Ġsource uri : ĠUri , Ġdestination Dir : ĠString , Ġdest FileName : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġbis : ĠBuffered InputStream ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġb os : ĠBuffered OutputStream ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġinput : ĠInputStream ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar ĠhasError Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Virtual File ( context , Ġsource uri )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Ġ= Ġget InputStream For Virtual File ( context , Ġsource uri , Ġget MimeType ( name )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Ġ= Ġcontext . content Resolver . open InputStream ( source uri ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdirectory Setup Result : ĠBoolean ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdest Dir Ġ= ĠFile ( destination Dir ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirectory Setup Result Ġ= Ġif Ġ(! dest Dir . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdest Dir . mkdir s () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(! dest Dir . isDirectory ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreplace File With Dir ( destination Dir ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! directory Setup Result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdestination Ġ= Ġdestination Dir Ġ+ ĠFile . separator Ġ+ Ġdest FileName ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoriginal size : ĠInt Ġ= Ġinput !!. available () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbis Ġ= ĠBuffered InputStream ( input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb os Ġ= ĠBuffered OutputStream ( File OutputStream ( destination )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuf Ġ= ĠByteArray ( original size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbis . read ( buf ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb os . write ( buf ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ( bis . read ( buf ) Ġ!== Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bos Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb os . flush () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb os . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ! has Error ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreplace File With Dir ( path : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( path ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! file . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( file . mkdir s ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( file . delete ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfolder Ġ= ĠFile ( path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( folder . mkdir s ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} Ċ } Ċ