package Ġcom . jetbrains . hand son . hand son . init Ċ Ċ import Ġkotlinx . c interop . Byte Var Ċ import Ġkotlinx . c interop . alloc Array Ċ import Ġkotlinx . c interop . mem Scoped Ċ import Ġkotlinx . c interop . to K String Ċ import Ġplatform . posix .* Ċ Ċ class ĠFile IO () Ġ{ ĊĊĠĠĠ Ġfun ĠreadFile ( filename : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġfopen ( filename , Ġ" r ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠFile IOException ( errno ) ĊĠĠĠĠĠĠĠ Ġvar Ġcontents Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmem Scoped Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuffer Length Ġ= Ġ 6 4 Ġ* Ġ 1 0 2 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= Ġalloc Array < Byte Var >( buffer Length ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnext Line Ġ= Ġf gets ( buffer , Ġbuffer Length , Ġfile )?. to K String () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( nextLine Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontents Ġ+= Ġnext Line ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Line Ġ= Ġf gets ( buffer , Ġbuffer Length , Ġfile )?. to K String () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġfinally { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfclose ( file ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcontents ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Folder ( folder Name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġmkdir ( folder Name , ĠS _ IR WX U ) ĊĠĠĠĠĠĠĠ Ġif Ġ( result Ġ!= Ġ 0 Ġ&& Ġresult Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠFile IOException ( errno ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate File ( fileName : ĠString , Ġcontents : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġfopen ( fileName , Ġ" w ") Ġ?: Ġthrow ĠFile IOException ( errno ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfprintf ( file , Ġcontents ) ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfclose ( file ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }