package Ġorg . map db . crash Ċ Ċ import Ġorg . map db . util . Data IO Ċ import Ġorg . map db . TT Ċ import Ġjava . io . Data InputStream Ċ import Ġjava . io . File Ċ import Ġjava . io . FileInputStream Ċ import Ġjava . io . File OutputStream Ċ Ċ /** Ċ Ġ* ĠTests Ġcrash Ġresistance Ġby Ġmanually Ġun plug ging Ġthe Ġdrive . Ċ Ġ* Ċ Ġ*/ Ċ Ċ fun Ġwait Until Available ( file : File ){ ĊĠĠĠ Ġif ( file . exists (). not ()) ĊĠĠĠĠĠĠĠ Ġprintln (" File Ġnot Ġavailable , Ġwaiting Ġuntil Ġit Ġexist Ġagain .") ĊĠĠĠ Ġwhile ( file . exists (). not ()) ĊĠĠĠĠĠĠĠ ĠThread . sleep ( 1 0 0 ) Ċ } Ċ Ċ fun Ġmain ( args Ġ: ĠArray < String >) Ġ{ ĊĠĠĠ Ġ// Ġlocal Ġdirectory , Ġthis Ġis Ġpermanent Ġstorage ĊĠĠĠ Ġval Ġd Ġ= ĠTT . temp Dir () ĊĠĠĠ Ġ// Ġfile Ġon Ġstorage Ġwhich Ġcan Ġbe Ġun pl u ged ĊĠĠĠ Ġval Ġfile Ġ= ĠFile ( args [ 0 ]) ĊĠĠĠ Ġwait Until Available ( file . parent File ) ĊĠĠĠ Ġfile . delete () ĊĠĠĠ Ġfile . createNew File () ĊĠĠĠ Ġvar Ġout Ġ= ĠFileOutputStream ( file ) ĊĠĠĠ Ġval Ġb Ġ= ĠByteArray ( 8 ) ĊĊĠĠĠ Ġvar Ġa Ġ= Ġ 0 L ĊĠĠĠ Ġwhile ( true ){ ĊĠĠĠĠĠĠĠ Ġa ++ ĊĠĠĠĠĠĠĠ Ġif ( file . exists (). not ()){ ĊĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile ( d , Ġ"$ a "). createNew File () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠData IO . put Long ( b , Ġ 0 , Ġ 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout . write ( b ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout . flush () ĊĠĠĠĠĠĠĠ Ġ} catch ( e : Exception ){ ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprintln (" Storage Ġgone , Ġprogress Ġis Ġ$ a "); ĊĠĠĠ Ġwait Until Available ( file ) ĊĊĠĠĠ Ġ// replay Ġfile ĊĠĠĠ Ġval Ġins Ġ= ĠData InputStream ( FileInputStream ( file )) ĊĠĠĠ Ġtry { ĊĠĠĠĠĠĠĠ Ġwhile ( true ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġins . read Long () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} catch ( e : Exception ){ ĊĠĠĠ Ġ} ĊĠĠĠ Ġprintln (" Replay ed Ġ$ a ") ĊĠĠĠ Ġfile . delete () ĊĊ Ċ } Ċ