package Ġvn . hun gh d . flutter downloader Ċ Ċ import Ġjava . io .* Ċ Ċ class ĠFile ManagerImpl Ġ: ĠFile Manager Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġwrite File ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠinputStream : ĠInputStream , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Resume : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Progress : Ġ( done : ĠLong ) Ġ-> ĠUnit ĊĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar ĠoutputFile : ĠFile ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar ĠoutputStream : ĠOutputStream ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠoutputFile Ġ= ĠFile ( path ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠoutputFile . parent File ?. mkdir s () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Reader Ġ= ĠByteArray ( BUFFER _ SIZE ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠoutputStream Ġ= ĠFileOutputStream ( outputFile , Ġis Resume ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdone Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġis Reading Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtime : ĠLong Ġ= ĠSystem . currentTimeMillis () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( is Reading ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġread Ġ= ĠinputStream . read ( file Reader ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( read Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdone Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Reading Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdone Ġ+= Ġread ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠoutputStream . write ( file Reader , Ġ 0 , Ġread ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( System . currentTimeMillis () Ġ- Ġtime Ġ> Ġ 5 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġinsert Ġpause s Ġto Ġfree Ġhttp Ġbandwidth ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 2 5 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Progress ( done ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠoutputStream . flush () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( outputFile . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠoutputFile . delete () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġe ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠinputStream . close () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠoutputStream . close () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġexists ( path : ĠString ) Ġ= ĠFile ( path ). exists () ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠBUFFER _ SIZE Ġ= Ġ 4 0 9 6 ĊĠĠĠ Ġ} Ċ }